tft每日頭條

 > 科技

 > pandas篩選數據後的索引

pandas篩選數據後的索引

科技 更新时间:2024-07-29 23:14:48

如果想學習 Python 數據分析,其中必掌握的一個數據處理技巧就是排序。可以極大的加速處理數據的效率。pandas 使用的數據排序的方法有 .sort_values().sort_index()

整套學習自學教程中應用的數據都是《三國志》、《真·三國無雙》系列遊戲中的内容。

pandas篩選數據後的索引(數據科學必備Pandas數據排序方法彙總)1

Pandas 排序方法入門

DataFrame 是一種帶有标記的行和列的數據結構,能按行或列值以及行或列索引對數據進行排序。 DataFrame 中行和列索引是用數字表示,可以使用索引位置從特定行或列中檢索數據。

默認情況下索引号從零開始,也可以手動分配自己的索引。

數據準備

import pandas as pd df = pd.read_Excel("Romance of the Three Kingdoms 13/人物詳情數據.xlsx") df.head()

pandas篩選數據後的索引(數據科學必備Pandas數據排序方法彙總)2

.sort_values()

類似 Excel 中的值排序,在 DataFrame 中使用 .sort_values() 沿任一軸(列或行)對值進行排序。

pandas篩選數據後的索引(數據科學必備Pandas數據排序方法彙總)3

.sort_index()

使用 .sort_index() 通過行索引或列标簽對 DataFrame 進行排序。

pandas篩選數據後的索引(數據科學必備Pandas數據排序方法彙總)4

DataFrame 單列數據排序

.sort_values() 默認情況返回一個按升序排序的新 DataFrame ,并且不會修改原始 DataFrame。

按升序按列排序

使用 .sort_values() 排序要将單個參數傳遞給包含要排序的列的名稱的方法。

df.sort_values("生年")

pandas篩選數據後的索引(數據科學必備Pandas數據排序方法彙總)5

排序順序調整

默認情況下 .sort_values() ascending 設置為 True(升序排列)。如果按降序排序則設置為 False 。

df.sort_values("生年",ascending=False)

pandas篩選數據後的索引(數據科學必備Pandas數據排序方法彙總)6

選擇排序算法

可用的算法有 快速排序(quicksort) 、歸并排序(mergesort) 、堆排序(heapsort)

df.sort_values(by="city08",ascending=False,kind="mergesort")

pandas篩選數據後的索引(數據科學必備Pandas數據排序方法彙總)7

DataFrame 多列數據排序

按兩個鍵排序,可以将列名列表by傳遞。

升序按列排序

要在多列上對 DataFrame 進行排序,必須提供列名列表。

df.sort_values(by=["生年", "壽命"])[["生年", "壽命"]] 生年 壽命 779 130 66 471 132 63 592 132 63 183 132 64 435 132 75 ... ... ... 369 243 18 279 246 18 318 246 57 727 247 60 227 248 36 857 rows × 2 columns

更改列排序順序

調整排序 by 列表的的順序。

df.sort_values(by=["壽命","生年"])[["壽命","生年"]] 壽命 生年 335 13 196 605 14 195 794 16 177 679 17 182 369 18 243 ... ... ... 822 107 162 843 107 162 844 107 162 845 107 162 851 107 162 857 rows × 2 columns

降序按多列排序

df.sort_values(by=["壽命","生年"],ascending=False)[["壽命","生年"]] 壽命 生年 811 107 162 822 107 162 843 107 162 844 107 162 845 107 162 ... ... ... 369 18 243 679 17 182 794 16 177 605 14 195 335 13 196 857 rows × 2 columns

不同排序順序的多列排序

使用多個列進行排序并讓這些列使用不同的 ascending 參數。pandas 可以通過單個方法調用來完成此操作。如果要按升序對某些列進行排序,而按降序對某些列進行排序,則可以将布爾值列表傳遞給 ascending 即可。

df.sort_values( by=["壽命","生年","登場"], ascending=[True, True, False] )[["壽命","生年","登場"]] 壽命 生年 登場 335 13 196 207 605 14 195 207 794 16 177 190 679 17 182 196 369 18 243 253 ... ... ... ... 811 107 162 176 822 107 162 176 843 107 162 176 844 107 162 176 845 107 162 176 857 rows × 3 columns

DataFrame 索引排序

DataFrame 有一個.index 屬性,默認表示行位置的數字。索引可以視為行号,有助于快速查找和識别行(功能同 MySQL)。

索引升序排序

使用 .sort_index() 根據行索引對 DataFrame 進行排序。

使用 .sort_values() 創建一個新的排序 DataFrame 進行後續的操作。

sorted_df = df.sort_values(by=["make", "model"]) sorted_df

pandas篩選數據後的索引(數據科學必備Pandas數據排序方法彙總)8

使用 .sort_index() 恢複 DataFrame 原始順序。

sorted_df.sort_index()

pandas篩選數據後的索引(數據科學必備Pandas數據排序方法彙總)9

使用 bool 進行判斷。

sorted_df.sort_index() == df

pandas篩選數據後的索引(數據科學必備Pandas數據排序方法彙總)10

可以自定義索引分配了 .set_index() 設置列表進行參數傳遞。

assigned_index_df = df.set_index(["壽命","生年"]) assigned_index_df

pandas篩選數據後的索引(數據科學必備Pandas數據排序方法彙總)11

使用 .sort_index() 進行排序。

assigned_index_df.sort_index()

pandas篩選數據後的索引(數據科學必備Pandas數據排序方法彙總)12

索引降序排序

assigned_index_df.sort_index(ascending=False)

pandas篩選數據後的索引(數據科學必備Pandas數據排序方法彙總)13

DataFrame 列排序

使用 DataFrame 的列标簽對行值進行排序。 使用 .sort_index() 并将可選參數軸設置為 1 将按列标簽對 DataFrame 進行排序。

DataFrame 的軸是指索引(axis=0)或列(axis=1)。 可以使用這兩個軸來索引和選擇 DataFrame 中的數據以及對數據進行排序。

列标簽排序

df.sort_index(axis=1)

pandas篩選數據後的索引(數據科學必備Pandas數據排序方法彙總)14

df.sort_index(axis=1, ascending=False)

pandas篩選數據後的索引(數據科學必備Pandas數據排序方法彙總)15

排序時處理丢失的數據

使用 na_position 參數執行此缺失數據列的排序操作。

df["mpgData_"] = df["mpgData"].map({"Y": True})

pandas篩選數據後的索引(數據科學必備Pandas數據排序方法彙總)16

na_position 的 .sort_values()

.sort_values() 接受一個名為 na_position 的參數,該參數有助于處理要排序的列中的缺失數據。

df.sort_values(by="mpgData_",na_position="first")

pandas篩選數據後的索引(數據科學必備Pandas數據排序方法彙總)17

用于排序的列中的任何缺失數據都将顯示在 DataFrame 的前面。用于查看列的缺失值情況。

DataFrame 排序修改

.sort_values() 中增加重要的參數 inplace=True。作用在于直接對原始的 DataFrame 進行修改。

df.sort_values("壽命",inplace=True) df.reset_index(drop=True,inplace=True) df

pandas篩選數據後的索引(數據科學必備Pandas數據排序方法彙總)18

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关科技资讯推荐

热门科技资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved