網(wǎng)站如何做seo的網(wǎng)絡(luò)營銷課程培訓(xùn)機(jī)構(gòu)
數(shù)據(jù)分析-Pandas類別的排序和順序
數(shù)據(jù)分析和處理中,難免會(huì)遇到各種數(shù)據(jù),那么數(shù)據(jù)呈現(xiàn)怎樣的規(guī)律呢?不管金融數(shù)據(jù),風(fēng)控?cái)?shù)據(jù),營銷數(shù)據(jù)等等,莫不如此。如何通過圖示展示數(shù)據(jù)的規(guī)律?
數(shù)據(jù)表,時(shí)間序列數(shù)據(jù)在數(shù)據(jù)分析建模中很常見,例如天氣預(yù)報(bào),空氣狀態(tài)監(jiān)測(cè),股票交易等金融場(chǎng)景。數(shù)據(jù)分析過程中重新調(diào)整,重塑數(shù)據(jù)表是很重要的技巧,此處選擇Titanic數(shù)據(jù),以及巴黎、倫敦歐洲城市空氣質(zhì)量監(jiān)測(cè) N O 2 NO_2 NO2?數(shù)據(jù)作為樣例。
數(shù)據(jù)分析
數(shù)據(jù)分析-Pandas如何轉(zhuǎn)換產(chǎn)生新列
數(shù)據(jù)分析-Pandas如何統(tǒng)計(jì)數(shù)據(jù)概況
數(shù)據(jù)分析-Pandas如何輕松處理時(shí)間序列數(shù)據(jù)
數(shù)據(jù)分析-Pandas如何選擇數(shù)據(jù)子集
數(shù)據(jù)分析-Pandas如何重塑數(shù)據(jù)表-CSDN博客
本文用到的樣例數(shù)據(jù):
Titanic數(shù)據(jù)
空氣質(zhì)量監(jiān)測(cè) N O 2 NO_2 NO2?數(shù)據(jù)
樣例代碼:
源代碼參考 Pandas如何重塑數(shù)據(jù)表
源代碼參考 python數(shù)據(jù)分析-數(shù)據(jù)表讀寫到pandas
導(dǎo)入關(guān)鍵模塊
import pandas as pd
import numpy as np
實(shí)驗(yàn)數(shù)據(jù)分析處理,股票序列,時(shí)間序列,信號(hào)序列,有時(shí)候表格的數(shù)據(jù)并不完全是數(shù)值類型,也有可能是字符串,或者其他數(shù)據(jù),需要做分類處理。pandas如何控制數(shù)據(jù)分類處理呢?需要配置哪些參數(shù)?
排序和順序
如果分類數(shù)據(jù)是有序的,則類別的順序是有意義的,就存在某些可能操作,如.min()/.max()
如果分類數(shù)據(jù)是無序的,如果操作則將引發(fā)TypeError
In [88]: s = pd.Series(pd.Categorical(["a", "b", "c", "a"], ordered=False))
In [89]: s = s.sort_values()
In [90]: s = pd.Series(["a", "b", "c", "a"]).astype(CategoricalDtype(ordered=True))
In [91]: s = s.sort_values()In [92]: s
Out[92]:
0 a
3 a
1 b
2 c
dtype: category
Categories (3, object): ['a' < 'b' < 'c']In [93]: s.min(), s.max()
Out[93]: ('a', 'c')
也可以設(shè)置分類數(shù)據(jù)為有序,使用函數(shù) as_ordered()
,設(shè)置為無序,使用函數(shù) as_unordered()
,這些函數(shù)默認(rèn)返回一個(gè)新的對(duì)象。
In [94]: s.cat.as_ordered()
Out[94]:
0 a
3 a
1 b
2 c
dtype: category
Categories (3, object): ['a' < 'b' < 'c']In [95]: s.cat.as_unordered()
Out[95]:
0 a
3 a
1 b
2 c
dtype: category
Categories (3, object): ['a', 'b', 'c']
排序?qū)⑹褂妙悇e定義的邏輯順序,而不是數(shù)據(jù)類型的詞法,數(shù)值順序,即使對(duì)于字符串和數(shù)值數(shù)據(jù)也是如此:
In [96]: s = pd.Series([1, 2, 3, 1], dtype="category")
In [97]: s = s.cat.set_categories([2, 3, 1], ordered=True)
In [98]: sOut[98]:
0 1
1 2
2 3
3 1
dtype: category
Categories (3, int64): [2 < 3 < 1]In [99]: s = s.sort_values()
In [100]: sOut[100]:
1 2
2 3
0 1
3 1
dtype: category
Categories (3, int64): [2 < 3 < 1]In [101]: s.min(), s.max()
Out[101]: (2, 1)
重排序
可以通過Categorical.reorder_categories()
對(duì)類別進(jìn)行重新排序。
In [102]: s = pd.Series([1, 2, 3, 1], dtype="category")In [103]: s = s.cat.reorder_categories([2, 3, 1], ordered=True)In [104]: s
Out[104]:
0 1
1 2
2 3
3 1
dtype: category
Categories (3, int64): [2 < 3 < 1]In [105]: s = s.sort_values()In [106]: s
Out[106]:
1 2
2 3
0 1
3 1
dtype: category
Categories (3, int64): [2 < 3 < 1]In [107]: s.min(), s.max()
Out[107]: (2, 1)
請(qǐng)注意新增類別和重排序之間的區(qū)別,重新排序意味著 之后對(duì)值進(jìn)行排序的方式會(huì)有所不同。
如果是無序的,min(), max()函數(shù)都會(huì)引起錯(cuò)誤,數(shù)值操作函數(shù)也如此,如median()函數(shù),需要計(jì)算均值。
多列排序
如果多個(gè)類別列參與排序,類別的排序取決于該列的類別順序。
In [108]: dfs = pd.DataFrame(.....: {.....: "A": pd.Categorical(.....: list("bbeebbaa"),.....: categories=["e", "a", "b"],.....: ordered=True,.....: ),.....: "B": [1, 2, 1, 2, 2, 1, 2, 1],.....: }.....: ).....: In [109]: dfs.sort_values(by=["A", "B"])
Out[109]: A B
2 e 1
3 e 2
7 a 1
6 a 2
0 b 1
5 b 1
1 b 2
4 b 2
如果更改類別進(jìn)行重新排序,那么后面的排序也會(huì)跟著變化。
In [110]: dfs["A"] = dfs["A"].cat.reorder_categories(["a", "b", "e"])In [111]: dfs.sort_values(by=["A", "B"])
Out[111]: A B
7 a 1
6 a 2
0 b 1
5 b 1
1 b 2
4 b 2
2 e 1
3 e 2
以上代碼只是一個(gè)簡(jiǎn)單示例,示例代碼中的表達(dá)式可以根據(jù)實(shí)際問題進(jìn)行修改。
后面介紹下其他的展示形式。
覺得有用 收藏 收藏 收藏
點(diǎn)個(gè)贊 點(diǎn)個(gè)贊 點(diǎn)個(gè)贊
End
GPT專欄文章:
GPT實(shí)戰(zhàn)系列-ChatGLM3本地部署CUDA11+1080Ti+顯卡24G實(shí)戰(zhàn)方案
GPT實(shí)戰(zhàn)系列-LangChain + ChatGLM3構(gòu)建天氣查詢助手
大模型查詢工具助手之股票免費(fèi)查詢接口
GPT實(shí)戰(zhàn)系列-簡(jiǎn)單聊聊LangChain
GPT實(shí)戰(zhàn)系列-大模型為我所用之借用ChatGLM3構(gòu)建查詢助手
GPT實(shí)戰(zhàn)系列-P-Tuning本地化訓(xùn)練ChatGLM2等LLM模型,到底做了什么?(二)
GPT實(shí)戰(zhàn)系列-P-Tuning本地化訓(xùn)練ChatGLM2等LLM模型,到底做了什么?(一)
GPT實(shí)戰(zhàn)系列-ChatGLM2模型的微調(diào)訓(xùn)練參數(shù)解讀
GPT實(shí)戰(zhàn)系列-如何用自己數(shù)據(jù)微調(diào)ChatGLM2模型訓(xùn)練
GPT實(shí)戰(zhàn)系列-ChatGLM2部署Ubuntu+Cuda11+顯存24G實(shí)戰(zhàn)方案
GPT實(shí)戰(zhàn)系列-Baichuan2本地化部署實(shí)戰(zhàn)方案
GPT實(shí)戰(zhàn)系列-Baichuan2等大模型的計(jì)算精度與量化
GPT實(shí)戰(zhàn)系列-GPT訓(xùn)練的Pretraining,SFT,Reward Modeling,RLHF
GPT實(shí)戰(zhàn)系列-探究GPT等大模型的文本生成-CSDN博客