pandas統計功能


1. 聚合

grouped=df.groupby(by='column name'), 是一個DataFrameGroupBy對象,可以迭代grouped中的每個元素是一個元組,元組里面的值是(索引(分組的值),分組之后的DataFrame對象)

1 dfs_002=dfs_001.groupby(by='Cabinet / ATO')

常見的DataFrameGroupBy對象經過優化的方法:

(1) count          分組中非Na值的數量

(2) sum            非NA值的和

(3) mean          非NA值的平均值

(4) median       非NA值的算數中位數

(5) std, var       無偏(分母為n-1)標准差和方差

(6) min, max    非NA值的最大和最小值

2. 分組

如果對df對象的所有列按照某個字段分組,分組的結果是DataFrameGroupBy,行索引是macd_flag。而且,當對df對象的所有列按照某個字段應用分組統計函數時,結果是一個dataframe對象。

dfs_macd_a.groupby(by='macd_flag')
dfs_macd_a.groupby(by='macd_flag').count()

考慮另外一個場景,假如要想統計在df數據集中兩列元素出現次數也就是統計A、B兩列的元素的出現情況,只要在groupby()中的by參數添加就可以。

dfs_macd_b.groupby(by=['A','B'])

使用.size()可得到<class 'pandas.core.series.Series'>結構的數據

dfs_macd_a.groupby(by='macd_flag').size()

對StarBucks國家和省份分布進行分組統計:可以在by=后面寫列表。結果是個Series類型的數據,包含country和state/province兩個索引列。因為需要對brand列進行統計,所以后面的統計條件需要使用df['country]和df['state/province]。

grouped=df["brand"].groupby(by=[df['country'],df['state/Province']]).count()

如果是對整個dataframe進行分組,統計條件直接使用country和state/province. 獲取分組后的某一部分數據

grouped=df.groupby(by=['country','state/Province'])['country'].count()

如果需要返回Dataframe數據類型

grouped1=df[['brand']].groupby(by=[df['country'],df['state/Province']])['country'].count()
grouped2=groupby(by=[df['country'],df['state/Province']][['brand']].count()
grouped3=groupby(by=[df['country'],df['state/Province']].count()[['brand']]

 3. 平均值

rating_mean=df['Rating'].mean()

4. 獲取某列中去掉重復值數據並轉換成列表

Directer=df['directer'].unique()

5. 最大值

max_runtime=df['runtime'].max()

6. 獲取最大值索引位置

參考:https://www.cnblogs.com/liulangmao/p/9211537.html

           https://baike.baidu.com/item/argmax/6034072?fr=aladdin

max_runtime=df['runtime'].argmax()

 7. 分組迭代

當對groupby的列只有單個時(示例根據hobby進行分組),可以 使用 key , value 形式 對分組后的數據進行迭代,其中key 是分組的名稱,value是分組的數據;

1 group = frame['name'].groupby(frame['class'])
2 for key , data in group:
3  print(key)
4  print(data)

當對多個列進行分組迭代時,有多少列則需要指定多少個key與其對應,key可以是任何不重復的變量名稱

1 group = frame['name'].groupby([frame['class'],frame['age']])
2 for (key1, key2) , data in group:
3  print(key1,key2)
4  print(data)

 8. size()和count()的區別

 

參考:https://blog.csdn.net/weixin_39874379/article/details/112288345?utm_medium=distribute.pc_relevant.none-task-blog-baidujs_title-0&spm=1001.2101.3001.4242


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM