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)

 

posted @ 2020-12-04 11:33  Tracydzf  阅读(220)  评论(0编辑  收藏  举报