记录Pandas处理数据的两个小技巧


◆ ◆ ◆  ◆ 

Pandas

Pandas无疑是Python中用于数据分析最好的第三方库了。各种数据分析的日常应用场景下,我都会想Pandas能不能完成这个需求?会不会更简单?!话不多说,今天分享两个Pandas处理数据的小技巧。

按天统计不同类别商品销量占比

工作中的小技巧(一),希望大家get起来~

日期 商品 销售额
占比
2020-05-01
苏菲
233
2020-05-01
冈本
303

2020-05-01
筋膜枪
296

2020-05-01
口红
318

2020-05-02
苏菲
106

2020-05-02
冈本
392

2020-05-02
筋膜枪
229

2020-05-02
口红
162

2020-05-03
苏菲
457

2020-05-03
冈本
109

2020-05-03
筋膜枪
281

2020-05-03
口红
497

……
2020-05-14
苏菲
111

2020-05-14 冈本
286

2020-05-14 筋膜枪
245

2020-05-14 口红
215

2020-05-15
苏菲
260

2020-05-15
冈本
226

2020-05-15
筋膜枪
324

2020-05-15
口红
246

工作中,这种问题还是比较多的。通过分析比较每天不同商品的销售额占比,再结合利润率情况,就可以知道公司下一步应该主推什么才能盈利,哪些商品的占比应该提高或者降低。或者也可以反映出哪些种类的商品更赚钱,对公司盈利层面更有帮助。

# Python coding
>>> df = pd.read_csv('./sales.csv')
>>> df.set_index('日期',inplace = True)


>>> (100*df['销售额']/df['销售额'].sum(level = '日期')).round(2).map('{}%'.format)
 
日期
2020-05-01    20.26%
2020-05-01    26.35%
2020-05-01    25.74%
2020-05-01    27.65%
2020-05-02    11.92%
2020-05-02    44.09%
2020-05-02    25.76%
2020-05-02    18.22%
Name: 销售额, dtype: object


>>> df['占比'] = (100*df['销售额']/df['销售额'].sum(level = '日期')).round(2).map('{}%'.format)
>>> df.head(8)

记录Pandas处理数据的两个小技巧_第1张图片

如果各位有关于SQL的写法来解决此类问题,且比较简单的解法,欢迎与我交流~还望不吝赐教!

Pandas实现group_concat功能

一般情况下,销售表的生成方式都是产生记录后,一条一条插入的。我们看到的表是一行一行的。但是,总有一些奇葩的需求,想把表横过来看看。所谓的换个角度看世界,我依然很穷!

记录Pandas处理数据的两个小技巧_第2张图片

如何实现上述图片的转换过程呢?!看代码吧~

>>> df.groupby('顾客').apply(lambda x:'-'.join(x['商品']))

记录Pandas处理数据的两个小技巧_第3张图片

感觉怪怪的!我是想说,这看起来没有字段名,也不太好吧。变个魔术即可~

>>> df.groupby('顾客').apply(lambda x:'-'.join(x['商品'])).reset_index().rename({0:'商品'},axis=1)
>>> df_gb = df.groupby('顾客').apply(lambda x:'-'.join(x['商品'])).reset_index().rename({0:'商品'},axis=1)
>>> df_gb

记录Pandas处理数据的两个小技巧_第4张图片

>>> df_gb['商品'].str.split('-',expand = True)
>>> df_gb[['商品1','商品2','商品3']] = df_gb['商品'].str.split('-',expand = True)
>>> df_gb
>>> df_gb.drop('商品',axis = 1,inplace = True)
>>> df_gb

完成~

本周送书:转发本文到朋友圈,朋友点赞30个即可包邮送到家~先到先得!

 

记录Pandas处理数据的两个小技巧_第5张图片

在看”的永远18岁~

你可能感兴趣的:(记录Pandas处理数据的两个小技巧)