前幾天看了篇教程:使用Pandas對數(shù)據(jù)進(jìn)行篩選和排序
里面主要介紹了么库,我們在使用Pandas時跋炕,對數(shù)據(jù)進(jìn)行篩選和排序的介紹
這里簡單總結(jié)分享下自己克锣。
排序
可能是版本的問題茵肃,原文中的sort函數(shù)沒有了,變成了2個常用的函數(shù) sort_index和sort_value
DataFrame.sort_index(axis=0, level=None, ascending=True, inplace=False, kind='quicksort', na_position='last', sort_remaining=True, by=None)
Sort object by labels (along an axis)
DataFrame.sort_values(by, axis=0, ascending=True, inplace=False, kind='quicksort', na_position='last')
Sort by the values along either axis
sort_index:按照索引排序娶耍,及列標(biāo)簽或行標(biāo)簽免姿,axis=0是列標(biāo)簽,axis=1是行標(biāo)簽
df3 = pd.DataFrame(np.random.randn(6,4),
index=list(range(0,12,2)),
columns=list(range(0,8,2)))
print(df3)
print(df3.sort_index(axis=0,ascending=False))
print(df3.sort_index(axis=1,ascending=False))
sort_value:按值進(jìn)行排序榕酒,這個估計用的會多些胚膊,按數(shù)據(jù)內(nèi)容進(jìn)行排序
print(df3)
print(df3.sort_values(by=[0],axis=0,ascending=True))
print(df3.sort_values(by=[2],axis=0,ascending=False))
排序后呢故俐,我們可能有,只需要看到前10紊婉、后10這類的需求药版,需要用到另一個函數(shù) head()、tail()
篩選
篩選呢喻犁,我們上一篇介紹了loc和iloc
Pandas手冊(3)-DataFrame-Selection By Label/Position
這里槽片,我們實際應(yīng)用下
import pandas as pd
import numpy as np
df = pd.read_excel(r'D:\document\tableau_data\data_stu.xlsx',sheetname=0)
print(df)
#按照數(shù)學(xué)、語文肢础,降序排列
print(df.sort_values(by=['數(shù)學(xué)','語文'],ascending=False))
#按照數(shù)學(xué)还栓、語文,降序排列传轰,取前3
print(df.sort_values(by=['數(shù)學(xué)','語文'],ascending=False).head(3))
#按照數(shù)學(xué)剩盒、語文,降序排列慨蛙,取后3
print(df.sort_values(by=['數(shù)學(xué)','語文'],ascending=False).tail(3))
#篩選數(shù)學(xué)大于90的
print(df.loc[df['數(shù)學(xué)']>=90])
#篩選數(shù)學(xué)大于等于90辽聊,且語文小于60的
print(df.loc[(df['數(shù)學(xué)']>=90) & (df['語文']<60)])
#篩選數(shù)學(xué)或語文大于60分,愛英語排序
print(df.loc[(df['數(shù)學(xué)']>=60) | (df['語文']>=60)].sort_values(by=['英語']))
數(shù)據(jù)如下期贫,
image.png
我們主要是多種過濾條件的整合使用跟匆,大家多練習(xí)就可以掌握了