ermutuxia

2020-11-19   阅读量: 1290

Python Excel

用全景数据和python作图。需要分析的数据为2020年11月1日到2020年11月18日的日流量数据。数据清洗案例

扫码加入数据分析学习群

先从全景网站下载数据如下:

PGC_问答站-趋势分析(2020-10-21至2020-11-19).xls

image.png

image.png

老板要求11月日均流量要达到800,所以我现在就想看下,11月份接下来的这几天我每日的uv达到多少,才能保证完成领导交给的任务。

下面是代码分分享

#导入库
import pandas 
import matplotlib.pyplot as plt
import xlrd
path="D:\\360安全浏览器下载\\PGC_问答站-趋势分析(2020-10-21至2020-11-19).xls"
#导入数据
#在这里没有采用常规的导入方法,比如read_excel第一个参数直接设定为excel路径,是因为
#我们所用的这个excel文件的编码方式比较特殊,必须指定编码方式才能正确导入
#而pd.read_excel函数不支持编码参数encoding设定,所以我们用这种方式对pd.read_excel函数第一个参数io进行赋值
data=pd.read_excel(xlrd.open_workbook(path,encoding_override="GB2312"),sheet_name='趋势分析',skiprows=4,skipfooter=2)


image.png


#我们不要第0行的数据因为那是一个总计,第1行是11月19日的数据,因为这天还没有过完,所以这个数据还没有最终确定,因此这两行值没有太大意义,我们只把第2行到第19行的数据取出来。还有时段独立访客这两列取出来。

image.png

needdata=data.loc[2:19,["时段","独立访客"]]

image.png

#对数据进行重新排序和重设索引

needdata.sort_values(by="时段",inplace=True)

needdata.reset_index(inplace=True,drop=True)

image.png

#接下来计算本月剩余天数每天的平均进度,以便完成老板规定的本月目标

本月天数=30

本月目标=800*30 #24000

本月已过天数=needdata.shape[0] #18

本月剩余天数=本月天数-本月已过天数

本月已完成部分=needdata["独立访客"].sum() #14913

本月未完成部分=本月目标-本月已完成部分

本月未完成部分的任务分配到每天=本月未完成部分/本月剩余天数

print("本月未完成部分的任务分配到每天",本月未完成部分的任务分配到每天)

image.png

#不多说了,要不任务完不成了,已哭晕,求安慰。

#忘了画图了 (哭哭)

fig,ax=plt.subplots(1,1,figsize=(10,5))

ax.bar(needdata["时段"],needdata["独立访客"])

ax.set_xticklabels(needdata["时段"],rotation=80)

image.png

添加CDA认证专家【维克多阿涛】,微信号:【cdashijiazhuang】,提供数据分析指导及CDA考试秘籍。已助千人通过CDA数字化人才认证。欢迎交流,共同成长!
2.6599 5 2 关注作者 收藏

评论(2)

ermutuxia
2020-11-27
# -*- coding: utf-8 -*-
"""
Created on Mon Nov 23 11:01:18 2020
@author: Administrator
"""
#导入库
import pandas 
import matplotlib.pyplot as plt
import xlrd
path="D:\\360安全浏览器下载\\PGC_问答站-趋势分析(2020-10-29至2020-11-27).xls"
#导入数据
#在这里没有采用常规的导入方法,比如read_excel第一个参数直接设定为excel路径,是因为
#我们所用的这个excel文件的编码方式比较特殊,必须指定编码方式才能正确导入
#而pd.read_excel函数不支持编码参数encoding设定,所以我们用这种方式对pd.read_excel函数第一个参数io进行赋值
data=pd.read_excel(xlrd.open_workbook(path,encoding_override="GB2312"),sheet_name='趋势分析',skiprows=4,skipfooter=2)
#把2020年11月份的数据筛出来。
needdata=data[data["时段"].str.find("2020-11")!=-1].loc[:,["时段","独立访客"]]
#把时段变量变成日期格式
needdata["时段"]=needdata["时段"].map(lambda x:pd.Timestamp(x))
#对数据进行重新排序和重设索引
needdata.sort_values(by="时段",inplace=True)
needdata.reset_index(inplace=True,drop=True)
needdata["星期几"]=needdata["时段"].map(lambda x:x.dayofweek)+1
needdata["是否为工作日"]=needdata["星期几"]<6
#接下来计算本月剩余天数每天的平均进度,以便完成老板规定的本月目标
#如果最后一天的数据还没有统计完,还需要去掉最后一天的数据
needdata=needdata.iloc[0:-1,:]
本月天数=30
本月每日目标=800
本月目标=本月每日目标*30 #24000
本月已完成部分=needdata["独立访客"].sum() 
本月已过工作日天数=needdata["时段"][needdata["是否为工作日"]].count()
本月已过周末天数=needdata["时段"][needdata["是否为工作日"]==False].count()
本月已过天数=needdata.shape[0] 
本月平均每日完成=本月已完成部分/本月已过天数
本月平均每个工作日完成=needdata["独立访客"][needdata["是否为工作日"]].sum()/本月已过工作日天数
本月平均每个周末日完成=needdata["独立访客"][needdata["是否为工作日"]==False].sum()/本月已过周末天数
本月剩余天数=本月天数-本月已过天数
本月未完成部分=本月目标-本月已完成部分
本月未完成部分的任务分配到每天=本月未完成部分/本月剩余天数
print("本月天数:",本月天数)
print("本月每日目标:",本月每日目标)
print("本月目标:",本月目标)
print("本月已完成部分:",本月已完成部分)
print("本月已过天数",本月已过天数)
print("本月平均每日完成",本月平均每日完成)
print("本月平均每个工作日完成:",本月平均每个工作日完成)
print("本月平均每个周末日完成:",本月平均每个周末日完成)
print("本月未完成部分:",本月未完成部分)
print("本月剩余天数:",本月剩余天数)
print("本月未完成部分的任务分配到每天",本月未完成部分的任务分配到每天)


0.0000 0 0 回复
ermutuxia
2020-11-19

欢迎大家留言批判

0.0000 0 0 回复

推荐课程