赞赞童鞋鼓励我一定要勤更勤更勤更,好的那就更一个。虽然真的好累……

任务是酱紫的,有两个CSV文件,要解决4个问题:

Q1:2014年9月哪个店铺的总revenue最高?

Q2:2014年夏天哪个item_category的revenue最高?

Q3:有多少item的价格一直没变过?

Q4:2014年12月,25号商店的日销量的柱状图,并求方差

OK,let's go.

import pandas as pd
import numpy as np
import os
import time,datetime
import matplotlib.pyplot as pltDATA_FOLDER = 'D:/LFTK/W1/'transactions    = pd.read_csv(os.path.join(DATA_FOLDER, 'sales_train.csv.gz'))
items           = pd.read_csv(os.path.join(DATA_FOLDER, 'items.csv'))
#看看transactions长啥样#
transactions.head()
  date date_block_num shop_id item_id item_price item_cnt_day
0 02.01.2013 0 59 22154 999.00 1.0
1 03.01.2013 0 25 2552 899.00 1.0
2 05.01.2013 0 25 2552 899.00 -1.0
3 06.01.2013 0 25 2554 1709.05 1.0
4 15.01.2013 0 25 2555 1099.00 1.0
transactions['date']=transactions['date'].apply(lambda x:pd.to_datetime(x,dayfirst=True))  #date列数据类型是string,转成timestamp时间戳的形式def gy(s):return s.year
def gm(s):return s.month
transactions['year']=transactions['date'].apply(lambda x:gy(x))
transactions['month']=transactions['date'].apply(lambda x:gm(x))    #加两个新列:年,月transactions['revenue']=transactions['item_price']*transactions['item_cnt_day']    #加revenue列
transactions[transactions.year==2014][transactions.month==9]['revenue'].groupby(transactions['shop_id']).max()
##Q1:2014年9月哪个店铺的revenue最高
items.head()  #items数据框前5行
  item_name item_id item_category_id
0 ! ВО ВЛАСТИ НАВАЖДЕНИЯ (ПЛАСТ.) D 0 40
1 !ABBYY FineReader 12 Professional Edition Full... 1 76
2 ***В ЛУЧАХ СЛАВЫ (UNV) D 2 40
3 ***ГОЛУБАЯ ВОЛНА (Univ) D 3 40
4 ***КОРОБКА (СТЕКЛО) D 4 40
ic=pd.merge(items,transactions)   #合并数据框,相当于join
ic1 = ic[:1500000][ic['month'].isin([6,7,8])][ic.year==2014]     #选符合条件的子集(内存不够只能分段)
rev_each_cat1 = ic1['revenue'].groupby(ic1['item_category_id']).sum()    #每种item category的revenue分别是多少
del ic1                    #及时删除占内存的对象
ic2 = ic[1500000:][ic['month'].isin([6,7,8])][ic.year==2014]     #第二段
rev_each_cat2 = ic2['revenue'].groupby(ic2['item_category_id']).sum()
del ic2
rev = rev_each_cat1 + rev_each_cat2           #序列相加(不在两序列同时出现的category_id相加会是nan,所以不是个完美的解决方法)
category_id_with_max_revenue = rev.idxmax()     #返回max值对应的索引号
##Q2:2014年夏天哪个item_category的revenue最高pricenum = transactions.groupby(transactions['item_id']).item_price.nunique()   #每个item有多少个不同的price
num_items_constant_price = pricenum[pricenum==1].count()   #返回只有一种价格的item的数量
##Q3:有多少item的价格一直没变过trans2 = transactions[transactions.month==12][transactions.year==2014][transactions.shop_id==25][transactions.item_cnt_day>0]
#选符合条件的子集
var = np.var(trans2['item_cnt_day'])
##Q4:‘item_cnt_day’列的方差gbd = trans2['item_cnt_day'].groupby(trans2['date']).sum()
plt.bar(gbd.index,gbd.values)
plt.ylabel('Num items')
plt.xlabel('Day')
plt.title("Daily revenue for shop_id = 25")
plt.show()
##Q4:日销量柱状图

很奇妙的是29号没有销量,30号销量猛增!原因至今还是个谜……

python日期处理、groupby聚合、求最大值、方差相关推荐

  1. 1.16.Flink Window和Time详解、TimeWindow的应用、Window聚合分类之全量聚合、全量聚合状态变化过程-求最大值、Time介绍、EventTime和Watermarks等

    1.16.Flink Window和Time详解 1.16.1.Window(窗口) 1.16.2.Window的类型 1.16.3.Window类型汇总 1.16.4.TimeWindow的应用 1 ...

  2. python求最大值代码的方式_python使用分治法实现求解最大值的方法

    本文实例讲述了python使用分治法实现求解最大值的方法.分享给大家供大家参考.具体分析如下: 题目: 给定一个顺序表,编写一个求出其最大值和最小值的分治算法. 分析: 由于顺序表的结构没有给出,作为 ...

  3. Python中求最大值和最小值max()函数、min()函数

    [小白从小学Python.C.Java] [Python全国计算机等级考试] [Python数据分析考试必会题] ● 标题与摘要 Python中求最大值和最小值 max()函数.min()函数 ● 选 ...

  4. python求最大值代码_python 最大值

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 推荐使用腾讯云 api 配套的 7 种常见的编程语言 sdk,已经封装了签名和请 ...

  5. python 二维列表按列求和,按列求最大值,转置,* 星号操作,简便方法,不使用numpy

    python3中,二维列表(矩阵)按列求和.求最大值.二维列表转置的一些操作,不使用numpy库.在LeetCode做题时比较常用. 太长不看版本 # 用于演示的二维列表 >>>a ...

  6. python输入十个数求最大值_python输入十个数如何输出最大值

    python输入十个数输出最大值的方法:1.如果是整数的话,使用函数[a, b, c = map(int, input().split())]:2.使用函数[X=input().split()]. 相 ...

  7. matlab用辛普森公式求积分_如何用Excel公式求最大值对应的行列序号

    微信公众号: Excel and Python 微信名搜索: 实用办公编程技能 如何用Excel公式求最大值对应的行列序号呢? 下面,我们来看看来自问题互动栏目的一个具体问题. 具体问题:求出哪一天哪 ...

  8. 求均值方差_协方差,方差,标准差

    要深度理解定义!!!要深度理解定义!!!要深度理解定义!!! 协方差,如下定义: 方差如下定义: 标准差就是sqrt(方差) 之前总是有个混淆的点. 故在这里mark一下.(要理解好定义的想表达的深层 ...

  9. Spark入门(十四)之分组求最大值

    一.分组求最大值 计算文本里面的每个key分组求最大值,输出结果. 二.maven设置 <?xml version="1.0" encoding="UTF-8&qu ...

  10. df满足条件的值修改_如何用python实现熵值法求指标权重(实例)

    权重是指某一因素或指标相对于某一事物的重要程度,其不同于一般的比重,体现的不仅仅是某一因素或指标所占的百分比,强调的是因素或指标的相对重要程度,倾向于贡献度或重要性.而在我们的数据分析过程中,倘若各个 ...

最新文章

  1. 25G DAC无源高速线缆和25G光模块之间的区别
  2. Python单元测试框架之pytest---如何执行测试用例
  3. 开启Sharepoint 2013站点邮箱
  4. csgo怎么控制电脑玩家_电脑远程控制怎么弄
  5. java dll 乱码_java调用c++ dll出现中文乱码 | 学步园
  6. 批量导出部分依赖图(PDP)
  7. HTML中用弹性布局设置位置,HTML的flex弹性布局
  8. vscode之美化js代码
  9. python画图包哪个好_十款好用的画图软件,你都用过吗?
  10. kindlefire刷安卓系统_[原创]安卓4.0完美运行 Kindle Fire刷机教程
  11. 从零开始玩PT-新人指南
  12. 丁磊向左,刘强东向右
  13. mac mini 开发android,Mac mini M1上成功启动Ubuntu
  14. SPARC架构下的反汇编(四)——SPARC汇编语言(二)
  15. 怎么教你如何查看电脑的蓝牙版本【解决方案】
  16. 云科技时代力作:《读懂新基建,数字技术带来全民机遇》上市
  17. MySQL主从同步详解与配置
  18. 一套好用的MES系统,到底要具备哪些特质?
  19. vue内使用 cytoscape(数据可视化)
  20. js 递归树根据子节点获取所有父节点

热门文章

  1. ORBSLAM源码理论分析2—单目初始化
  2. python并发测试脚本语言_python并发测试脚本
  3. Spring-Lifecycle分析
  4. python bokeh 3d_Python数据可视化:基于Bokeh的可视化绘图
  5. 德语语法笔记——虚拟式
  6. 日本巡逻机低飞掠过韩国军舰 韩军方斥“挑衅”
  7. PostgreSQL 来自欧罗巴Patroni watchdog 汪汪汪 5
  8. 电子政务平台需求开发 建设方案
  9. Linux性能学习(1.4):CPU_如何查看CPU上下文切换参数
  10. 文墨绘学:习惯决定孩子命运—习惯培养的五大步骤