前幾天看了篇教程:使用Pandas對數(shù)據進行篩選和排序
里面主要介紹了,我們在使用Pandas時,對數(shù)據進行篩選和排序的介紹
這里簡單總結分享下自己。
排序
可能是版本的問題,原文中的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:按照索引排序,及列標簽或行標簽,axis=0是列標簽,axis=1是行標簽
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:按值進行排序,這個估計用的會多些,按數(shù)據內容進行排序
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
這里,我們實際應用下
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ù)學、語文,降序排列
print(df.sort_values(by=['數(shù)學','語文'],ascending=False))
#按照數(shù)學、語文,降序排列,取前3
print(df.sort_values(by=['數(shù)學','語文'],ascending=False).head(3))
#按照數(shù)學、語文,降序排列,取后3
print(df.sort_values(by=['數(shù)學','語文'],ascending=False).tail(3))
#篩選數(shù)學大于90的
print(df.loc[df['數(shù)學']>=90])
#篩選數(shù)學大于等于90,且語文小于60的
print(df.loc[(df['數(shù)學']>=90) & (df['語文']<60)])
#篩選數(shù)學或語文大于60分,愛英語排序
print(df.loc[(df['數(shù)學']>=60) | (df['語文']>=60)].sort_values(by=['英語']))
數(shù)據如下,

image.png
我們主要是多種過濾條件的整合使用,大家多練習就可以掌握了