本站消息

站长简介/公众号


站长简介:高级软件工程师,曾在阿里云,每日优鲜从事全栈开发工作,利用周末时间开发出本站,欢迎关注我的微信公众号:程序员总部,程序员的家,探索程序员的人生之路!分享IT最新技术,关注行业最新动向,让你永不落伍。了解同行们的工资,生活工作中的酸甜苦辣,谋求程序员的最终出路!

  价值13000svip视频教程,python大神匠心打造,零基础python开发工程师视频教程全套,基础+进阶+项目实战,包含课件和源码

  出租广告位,需要合作请联系站长

+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

2020-12(12)

2021-01(53)

数据挖掘:pandas的应用记录 -- 持续更新

发布于2021-11-21 18:22     阅读(629)     评论(0)     点赞(0)     收藏(0)



    pandas是数据挖掘常用的工具包,内容全面丰富,使用简单。现将日常使用到的比较高级却容易忘记的功能记录下来。

    本篇持续更新,用到哪些该记录的就会更新记录。话不多说,现在开始。

一、shift / rolling / rank 的使用

        1、shift -- 数据移动

  1. df = pd.DataFrame(np.arange(16).reshape(4,4),
  2. columns=['AA','BB','CC','DD'],
  3. index =['a','b','c','d'])
  4. df.shift(-1) # 上移
  5. df.shift(1) # 下移
  6. df.shift(-1,axis = 1) # 左移
  7. df.shift(1,axis = 1) # 右移

        分组后组内移动

  1. df = pd.DataFrame({'1': ['A1', 'A2', 'A1', 'A2', 'A2', 'A1', 'A2'],
  2. '2': ['B1', 'B1', 'B1', 'B1', 'B1', 'B1', 'B1'],
  3. 'num': [1,2,1,3,4,2,1],
  4. 'ds': [pd.to_datetime('20130103'),pd.to_datetime('20130102'),
  5. pd.to_datetime('20130101'),pd.to_datetime('20130107'),
  6. pd.to_datetime('20130105'),pd.to_datetime('20130106'),
  7. pd.to_datetime('20130104')]})
  8. df_01 = df.groupby(['1','2']).apply(lambda x: x.sort_values('ds', ascending=True)).reset_index(drop=True)
  9. df_02 = pd.DataFrame(df_01.groupby(['1','2'])['num'].shift(1))
  10. df_03 = pd.concat([df_01,df_02],axis=1)
  11. df_03

        2、rolling -- 滚动滑窗

  1. df = pd.DataFrame({'B': [0, 1, 2, np.nan, 4]})
  2. '''
  3. window:表示时间窗的大小;
  4. min_periods:最少需要有值的观测点的数量;
  5. center:是否使用window的中间值作为label
  6. '''
  7. df.rolling(3, min_periods=1).sum()
  8. df.rolling(3, min_periods=2).sum()
  9. df.rolling(3, min_periods=1, center=True).sum()

        分组滑窗统计

  1. df = pd.DataFrame({'1': ['A1', 'A2', 'A1', 'A2', 'A2', 'A1', 'A2'],
  2. '2': ['B1', 'B1', 'B1', 'B1', 'B1', 'B1', 'B1'],
  3. 'num': [1,2,1,3,4,2,1],
  4. 'ds': [pd.to_datetime('20130103'),pd.to_datetime('20130102'),
  5. pd.to_datetime('20130101'),pd.to_datetime('20130107'),
  6. pd.to_datetime('20130105'),pd.to_datetime('20130106'),
  7. pd.to_datetime('20130104')]})
  8. df_01 = df.groupby(['1','2']).apply(lambda x: x.sort_values('ds', ascending=True)).reset_index(drop=True)
  9. df_02 = pd.DataFrame(df_01.groupby(['1', '2'])['num'].rolling(1).mean()).reset_index(drop=True)
  10. df_03 = pd.concat([df_01,df_02],axis=1)
  11. df_03

        3、rank -- 组内排序

  1. list1 = [1, 3, 1,0,7,4,0]
  2. list2 = [3, 3, 2,0,4,4,5]
  3. list3 = [3, 3, 3,3,4,4,6]
  4. df1 = pd.DataFrame({'col1':list1,'col2':list2,'col3':list3})
  5. df2 = df1.groupby(['col3']).rank(method='min',ascending=False)
  6. df3 = df1.groupby(['col3']).rank(method='max',ascending=False)
  7. df2
  8. df3







所属网站分类: 技术文章 > 博客

作者:dfd323

链接:https://www.pythonheidong.com/blog/article/1082656/2bc9a0d111d67ec4db51/

来源:python黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

0 0
收藏该文
已收藏

评论内容:(最多支持255个字符)