python日期处理、groupby聚合、求最大值、方差
赞赞童鞋鼓励我一定要勤更勤更勤更,好的那就更一个。虽然真的好累……
任务是酱紫的,有两个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.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 ...
- python求最大值代码的方式_python使用分治法实现求解最大值的方法
本文实例讲述了python使用分治法实现求解最大值的方法.分享给大家供大家参考.具体分析如下: 题目: 给定一个顺序表,编写一个求出其最大值和最小值的分治算法. 分析: 由于顺序表的结构没有给出,作为 ...
- Python中求最大值和最小值max()函数、min()函数
[小白从小学Python.C.Java] [Python全国计算机等级考试] [Python数据分析考试必会题] ● 标题与摘要 Python中求最大值和最小值 max()函数.min()函数 ● 选 ...
- python求最大值代码_python 最大值
广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 推荐使用腾讯云 api 配套的 7 种常见的编程语言 sdk,已经封装了签名和请 ...
- python 二维列表按列求和,按列求最大值,转置,* 星号操作,简便方法,不使用numpy
python3中,二维列表(矩阵)按列求和.求最大值.二维列表转置的一些操作,不使用numpy库.在LeetCode做题时比较常用. 太长不看版本 # 用于演示的二维列表 >>>a ...
- python输入十个数求最大值_python输入十个数如何输出最大值
python输入十个数输出最大值的方法:1.如果是整数的话,使用函数[a, b, c = map(int, input().split())]:2.使用函数[X=input().split()]. 相 ...
- matlab用辛普森公式求积分_如何用Excel公式求最大值对应的行列序号
微信公众号: Excel and Python 微信名搜索: 实用办公编程技能 如何用Excel公式求最大值对应的行列序号呢? 下面,我们来看看来自问题互动栏目的一个具体问题. 具体问题:求出哪一天哪 ...
- 求均值方差_协方差,方差,标准差
要深度理解定义!!!要深度理解定义!!!要深度理解定义!!! 协方差,如下定义: 方差如下定义: 标准差就是sqrt(方差) 之前总是有个混淆的点. 故在这里mark一下.(要理解好定义的想表达的深层 ...
- Spark入门(十四)之分组求最大值
一.分组求最大值 计算文本里面的每个key分组求最大值,输出结果. 二.maven设置 <?xml version="1.0" encoding="UTF-8&qu ...
- df满足条件的值修改_如何用python实现熵值法求指标权重(实例)
权重是指某一因素或指标相对于某一事物的重要程度,其不同于一般的比重,体现的不仅仅是某一因素或指标所占的百分比,强调的是因素或指标的相对重要程度,倾向于贡献度或重要性.而在我们的数据分析过程中,倘若各个 ...
最新文章
- 25G DAC无源高速线缆和25G光模块之间的区别
- Python单元测试框架之pytest---如何执行测试用例
- 开启Sharepoint 2013站点邮箱
- csgo怎么控制电脑玩家_电脑远程控制怎么弄
- java dll 乱码_java调用c++ dll出现中文乱码 | 学步园
- 批量导出部分依赖图(PDP)
- HTML中用弹性布局设置位置,HTML的flex弹性布局
- vscode之美化js代码
- python画图包哪个好_十款好用的画图软件,你都用过吗?
- kindlefire刷安卓系统_[原创]安卓4.0完美运行 Kindle Fire刷机教程
- 从零开始玩PT-新人指南
- 丁磊向左,刘强东向右
- mac mini 开发android,Mac mini M1上成功启动Ubuntu
- SPARC架构下的反汇编(四)——SPARC汇编语言(二)
- 怎么教你如何查看电脑的蓝牙版本【解决方案】
- 云科技时代力作:《读懂新基建,数字技术带来全民机遇》上市
- MySQL主从同步详解与配置
- 一套好用的MES系统,到底要具备哪些特质?
- vue内使用 cytoscape(数据可视化)
- js 递归树根据子节点获取所有父节点
热门文章
- ORBSLAM源码理论分析2—单目初始化
- python并发测试脚本语言_python并发测试脚本
- Spring-Lifecycle分析
- python bokeh 3d_Python数据可视化:基于Bokeh的可视化绘图
- 德语语法笔记——虚拟式
- 日本巡逻机低飞掠过韩国军舰 韩军方斥“挑衅”
- PostgreSQL 来自欧罗巴Patroni watchdog 汪汪汪 5
- 电子政务平台需求开发 建设方案
- Linux性能学习(1.4):CPU_如何查看CPU上下文切换参数
- 文墨绘学:习惯决定孩子命运—习惯培养的五大步骤