Pandas教學
Pandas環境安裝配置
Pandas數據結構
Pandas快速入門
Pandas系列
Pandas數據幀(DataFrame)
Pandas面板(Panel)
Pandas基本功能
Pandas描述性統計
Pandas函數應用
Pandas重建索引
Pandas迭代
Pandas排序
Pandas字符串和文本數據
Pandas選項和自定義
Pandas索引和選擇數據
Pandas統計函數
Pandas窗口函數
Pandas聚合
Pandas缺失數據
Pandas分組(GroupBy)
Pandas合併/連接
Pandas級聯
Pandas日期功能
Pandas時間差(Timedelta)
Pandas分類數據
Pandas可視化
Pandas IO工具
Pandas稀疏數據
Pandas注意事項&竅門
Pandas與SQL比較
Pandas排序
Pandas有兩種排序方式,它們分別是 -
- 按標籤
- 按實際值
下面來看看一個輸出的例子。
import pandas as pd
import numpy as np
unsorted_df=pd.DataFrame(np.random.randn(10,2),index=[1,4,6,2,3,5,9,8,0,7],colu
mns=['col2','col1'])
print (unsorted_df)
執行上面示例代碼,得到以下結果 -
col2 col1
1 1.069838 0.096230
4 -0.542406 -0.219829
6 -0.071661 0.392091
2 1.399976 -0.472169
3 0.428372 -0.624630
5 0.471875 0.966560
9 -0.131851 -1.254495
8 1.180651 0.199548
0 0.906202 0.418524
7 0.124800 2.011962
在unsorted_df
數據值中,標籤和值未排序。下面來看看如何按標籤來排序。
按標籤排序
使用sort_index()
方法,通過傳遞axis
參數和排序順序,可以對DataFrame
進行排序。 默認情況下,按照升序對行標籤進行排序。
import pandas as pd
import numpy as np
unsorted_df = pd.DataFrame(np.random.randn(10,2),index=[1,4,6,2,3,5,9,8,0,7],columns = ['col2','col1'])
sorted_df=unsorted_df.sort_index()
print (sorted_df)
執行上面示例代碼,得到以下結果 -
col2 col1
0 0.431384 -0.401538
1 0.111887 -0.222582
2 -0.166893 -0.237506
3 0.476472 0.508397
4 0.670838 0.406476
5 2.065969 -0.324510
6 -0.441630 1.060425
7 0.735145 0.972447
8 -0.051904 -1.112292
9 0.134108 0.759698
排序順序
通過將布爾值傳遞給升序參數,可以控制排序順序。 來看看下面的例子來理解一下。
import pandas as pd
import numpy as np
unsorted_df = pd.DataFrame(np.random.randn(10,2),index=[1,4,6,2,3,5,9,8,0,7],columns = ['col2','col1'])
sorted_df = unsorted_df.sort_index(ascending=False)
print (sorted_df)
執行上面示例代碼,得到以下結果 -
col2 col1
9 0.750452 1.754815
8 0.945238 2.079394
7 0.345238 -0.162737
6 -0.512060 0.887094
5 1.163144 0.595402
4 -0.063584 -0.185536
3 -0.275438 -2.286831
2 -1.504792 -1.222394
1 1.031234 -1.848174
0 -0.615083 0.784086
按列排列
通過傳遞axis
參數值爲0
或1
,可以對列標籤進行排序。 默認情況下,axis = 0
,逐行排列。來看看下面的例子來理解這個概念。
import pandas as pd
import numpy as np
unsorted_df = pd.DataFrame(np.random.randn(10,2),index=[1,4,6,2,3,5,9,8,0,7],columns = ['col2','col1'])
sorted_df=unsorted_df.sort_index(axis=1)
print (sorted_df)
執行上面示例代碼,得到以下結果 -
col1 col2
1 -0.997962 0.736707
4 1.196464 0.703710
6 -0.387800 1.207803
2 1.614043 0.356389
3 -0.057181 -0.551742
5 1.034451 -0.731490
9 -0.564355 0.892203
8 -0.763526 0.684207
0 -1.213615 1.268649
7 0.316543 -1.450784
按值排序
像索引排序一樣,sort_values()
是按值排序的方法。它接受一個by
參數,它將使用要與其排序值的DataFrame
的列名稱。
import pandas as pd
import numpy as np
unsorted_df = pd.DataFrame({'col1':[2,1,1,1],'col2':[1,3,2,4]})
sorted_df = unsorted_df.sort_values(by='col1')
print (sorted_df)
執行上面示例代碼,得到以下結果 -
col1 col2
1 1 3
2 1 2
3 1 4
0 2 1
注意: 觀察上面的輸出結果,
col1
值被排序,相應的col2
值和行索引將隨col1
一起改變。因此,它們看起來沒有排序。
通過by
參數指定需要列值,參考以下示例代碼 -
import pandas as pd
import numpy as np
unsorted_df = pd.DataFrame({'col1':[2,1,1,1],'col2':[1,3,2,4]})
sorted_df = unsorted_df.sort_values(by=['col1','col2'])
print (sorted_df)
執行上面示例代碼,得到以下結果 -
col1 col2
2 1 2
1 1 3
3 1 4
0 2 1
排序算法
sort_values()
提供了從mergeesort
,heapsort
和quicksort
中選擇算法的一個配置。Mergesort
是唯一穩定的算法。參考以下示例代碼 -
import pandas as pd
import numpy as np
unsorted_df = pd.DataFrame({'col1':[2,1,1,1],'col2':[1,3,2,4]})
sorted_df = unsorted_df.sort_values(by='col1' ,kind='mergesort')
print (sorted_df)
執行上面示例代碼,得到以下結果 -
col1 col2
1 1 3
2 1 2
3 1 4
0 2 1