pandas 面试题挑战十
查询df中指定行与列的数据
现有数据如下:
df = pd.read_csv('https://raw.githubusercontent.com/selva86/datasets/master/Cars93_miss.csv')
查询最贵的价格,解决方式如下:
np.max(df.Price)
输出
result:61.9
查询最贵价格的车,相关的'Manufacturer', 'Model', 'Type'信息
解决方式如下:
df.loc[df.Price == np.max(df.Price), ['Manufacturer', 'Model', 'Type']] #这种方式得到的是DataFrame
输出
重点解读: df.Price == np.max(df.Price) 会返回一个布尔型的Series df.loc[df.Price == np.max(df.Price)]会根据布尔型的Series返回DF中的指定行,也就是Series中值为True的行。 类似👇
也可以这样解决:
df.loc[row[0], ['Manufacturer', 'Model', 'Type']] #这种方式得到的是一个Series
导入csv数据,并对列名进行更改
现有数据如下:
df = pd.read_csv('https://raw.githubusercontent.com/selva86/datasets/master/Cars93_miss.csv')
把Type列改名为'CarType',并把名称中“.”替换成“_”
解决方法如下:
df.columns.values[2] = "CarType" #因为“type”在索引为2的列 df.columns = df.columns.map(lambda x: x.replace('.', '_')) print(df.columns)
输出
Index(['Manufacturer', 'Model', 'CarType', 'Min_Price', 'Price', 'Max_Price', 'MPG_city', 'MPG_highway', 'AirBags', 'DriveTrain', 'Cylinders', 'EngineSize', 'Horsepower', 'RPM', 'Rev_per_mile', 'Man_trans_avail', 'Fuel_tank_capacity', 'Passengers', 'Length', 'Wheelbase', 'Width', 'Turn_circle', 'Rear_seat_room', 'Luggage_room', 'Weight', 'Origin', 'Make'], dtype='object')
查询df中的null值
现有数据如下:
df = pd.read_csv('https://raw.githubusercontent.com/selva86/datasets/master/Cars93_miss.csv')
查询df中是否包含null值,只要有null值就返回True
解决如下:
df.isnull().values.any()
输出
True
重点解读
df.isnull() 得到👇这样的df
每个元素会根据是否为null返回True,False
df.isnull().values会把df中的元素快速转换为array就是👇这个样子
最后使用array的any方法,只要有一个True,值就位真。
统计df数据中每行包含的null值,并找出包含最多null值的行
现有数据如下:
df = pd.read_csv('https://raw.githubusercontent.com/selva86/datasets/master/Cars93_miss.csv')
统计df数据中每行包含的null值,并找出包含最多null值的行
n_missings_each_col = df.apply(lambda x: x.isnull().sum()) n_missings_each_col.idxmax(), n_missings_each_col.max()
输出
('Luggage.room', 19)