pandas 面试题挑战十
2019-05-31 本文已影响47人
人工智能人话翻译官
查询df中指定行与列的数据
现有数据如下:
df = pd.read_csv('https://raw.githubusercontent.com/selva86/datasets/master/Cars93_miss.csv')
查询最贵的价格,解决方式如下:
np.max(df.Price)
输出
61.9
查询最贵价格的车,相关的'Manufacturer', 'Model', 'Type'信息
解决方式如下:
df.loc[df.Price == np.max(df.Price), ['Manufacturer', 'Model', 'Type']]
#这种方式得到的是DataFrame
输出
![](https://img.haomeiwen.com/i16485689/75e95594c8cacc76.png)
重点解读:
df.Price == np.max(df.Price) 会返回一个布尔型的Series
df.loc[df.Price == np.max(df.Price)]会根据布尔型的Series返回DF中的指定行,也就是Series中值为True的行。
类似👇
image.png
也可以这样解决:
df.loc[row[0], ['Manufacturer', 'Model', 'Type']]
#这种方式得到的是一个Series
![](https://img.haomeiwen.com/i16485689/2b75e2f20a2d2ce5.png)
导入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
image.png
每个元素会根据是否为null返回True,False
df.isnull().values会把df中的元素快速转换为array就是👇这个样子
![](https://img.haomeiwen.com/i16485689/475e486166aa8a94.png)
最后使用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)