1、按條件篩選(與,或,非)
為數(shù)據(jù)篩選,使用與,或,非三個條件配合大于,小于和等于對數(shù)據(jù)進行篩選,并進行計數(shù)和求和。與 excel 中的篩選功能和 countifs 和 sumifs 功能相似。
Excel 數(shù)據(jù)目錄下提供了“篩選”功能,用于對數(shù)據(jù)表按不同的條件進行篩選。Python 中使用 loc 函數(shù)配合篩選條件來完成篩選功能。配合 sum 和 count 函數(shù)還能實現(xiàn) excel 中 sumif 和 countif 函數(shù)的功能。
1)使用“與”條件進行篩選
條件是年齡大于 25 歲,并且城市為 beijing。篩選后只有一條數(shù)據(jù)符合要求。
1#使用“與”條件進行篩選
2df_inner.loc[(df_inner[‘a(chǎn)ge’] > 25) & (df_inner[‘city’] == ‘beijing’), [‘id’,‘city’,‘a(chǎn)ge’,‘category’,‘gender’]]
2)使用“或”條件進行篩選
年齡大于 25 歲或城市為 beijing。篩選后有 6 條數(shù)據(jù)符合要求。
1#使用“或”條件篩選
2df_inner.loc[(df_inner[‘a(chǎn)ge’] > 25) | (df_inner[‘city’] == ‘beijing’), [‘id’,‘city’,‘a(chǎn)ge’,‘category’,‘gender’]].sort
3([‘a(chǎn)ge’])
3)求和
在前面的代碼后增加 price 字段以及 sum 函數(shù),按篩選后的結果將 price 字段值進行求和,相當于 excel 中 sumifs 的功能。
1 #對篩選后的數(shù)據(jù)按 price 字段進行求和
2 df_inner.loc[(df_inner[‘a(chǎn)ge’] > 25) | (df_inner[‘city’] == ‘beijing’),
3 [‘id’,‘city’,‘a(chǎn)ge’,‘category’,‘gender’,‘price’]].sort([‘a(chǎn)ge’]).price.sum()
4)使用“非”條件進行篩選
城市不等于 beijing。符合條件的數(shù)據(jù)有 4 條。將篩選結果按 id 列進行排序。
1#使用“非”條件進行篩選
2df_inner.loc[(df_inner[‘city’]
!= ‘beijing’), [‘id’,‘city’,‘a(chǎn)ge’,‘category’,‘gender’]].sort([‘id’])
在前面的代碼后面增加 city 列,并使用 count 函數(shù)進行計數(shù)。相當于 excel 中的 countifs 函數(shù)的功能。
1#對篩選后的數(shù)據(jù)按 city 列進行計數(shù)
2df_inner.loc[(df_inner[‘city’]
!= ‘beijing’), [‘id’,‘city’,‘a(chǎn)ge’,‘category’,‘gender’]].sort([‘id’]).city.count()
還有一種篩選的方式是用 query 函數(shù)。下面是具體的代碼和篩選結果。
1#使用 query 函數(shù)進行篩選
2df_inner.query(‘city == [‘beijing’, ‘shanghai’]’)
在前面的代碼后增加 price 字段和 sum 函數(shù)。對篩選后的 price 字段進行求和,相當于 excel 中的 sumifs 函數(shù)的功能。
1 #對篩選后的結果按 price 進行求和
2 df_inner.query(‘city == [‘beijing’, ‘shanghai’]’).price.sum()
3 12230
2、數(shù)據(jù)匯總
接下來是對數(shù)據(jù)進行分類匯總,Excel 中使用分類匯總和數(shù)據(jù)透視可以按特定維度對數(shù)據(jù)進行匯總,python 中使用的主要函數(shù)是 groupby 和 pivot_table。下面分別介紹這兩個函數(shù)的使用方法。
1)分類匯總
Excel 的數(shù)據(jù)目錄下提供了“分類匯總”功能,可以按指定的字段和匯總方式對數(shù)據(jù)表進行匯總。Python 中通過 Groupby 函數(shù)完成相應的操作,并可以支持多級分類匯總。
Groupby 是進行分類匯總的函數(shù),使用方法很簡單,制定要分組的列名稱就可以,也可以同時制定多個列名稱,groupby 按列名稱出現(xiàn)的順序進行分組。同時要制定分組后的匯總方式,常見的是計數(shù)和求和兩種。
1 #對所有列進行計數(shù)匯總
2 df_inner.groupby(‘city’).count()
可以在 groupby 中設置列名稱來對特定的列進行匯總。下面的代碼中按城市對 id 字段進行匯總計數(shù)。
1 #對特定的 ID 列進行計數(shù)匯總
2 df_inner.groupby(‘city’)[‘id’].count()
3 city
4 beijing 2
5 guangzhou 1
6 shanghai 2
7 shenzhen 1
8 Name: id, dtype: int64
在前面的基礎上增加第二個列名稱,分布對 city 和 size 兩個字段進行計數(shù)匯總。
1 #對兩個字段進行匯總計數(shù)
2 df_inner.groupby([‘city’,‘size’])[‘id’].count()
3 city size
4 beijing A 1
5 F 1
6 guangzhou A 1
7 shanghai A 1
8 B 1
9 shenzhen C 1
10 Name: id, dtype: int64
除了計數(shù)和求和外,還可以對匯總后的數(shù)據(jù)同時按多個維度進行計算,下面的代碼中按城市對 price 字段進行匯總,并分別計算 price 的數(shù)量,總金額和平均金額。
1 #對 city 字段進行匯總并計算 price 的合計和均值。
2 df_inner.groupby(‘city’)[‘price’].agg([len,np.sum, np.mean])
2)數(shù)據(jù)透視
Excel 中的插入目錄下提供“數(shù)據(jù)透視表”功能對數(shù)據(jù)表按特定維度進行匯總。Python 中也提供了數(shù)據(jù)透視表功能。通過 pivot_table 函數(shù)實現(xiàn)同樣的效果。
數(shù)據(jù)透視表也是常用的一種數(shù)據(jù)分類匯總方式,并且功能上比 groupby 要強大一些。下面的代碼中設定 city 為行字段,size 為列字段,price 為值字段。分別計算 price 的數(shù)量和金額并且按行與列進行匯總。
1 #數(shù)據(jù)透視表
2pd.pivot_table(df_inner,index=[‘city’],values=[‘price’],columns=[‘size’],aggfunc=[len,np.sum],fill_value=0,margins=True)文章來源:http://www.zghlxwxcb.cn/news/detail-728291.html
文章來源:網(wǎng)絡 版權歸原作者所有
上文內容不用于商業(yè)目的,如涉及知識產(chǎn)權問題,請權利人聯(lián)系小編,我們將立即處理文章來源地址http://www.zghlxwxcb.cn/news/detail-728291.html
到了這里,關于用Python做數(shù)據(jù)分析之數(shù)據(jù)篩選及分類匯總的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!