本文章涉及Python读取并处理Excel数据,pandas数据处理转化,matplotlib汇总柱状图、折线图,表格、双y轴柱状+折线图 。
一、首先导入相关的包
#导入相关的包
import numpy as np
import pandas as pd
from pandas import Series,DataFrame
import re
import matplotlib.pyplot as plt
1.1对matplotlib进行相关设置
#高清显示图片
%matplotlib inline
%config InlineBackend.figure_format = 'retina'
#显示中文
plt.rcParams['font.sans-serif'] = ['SimHei']
#正常显示负号
plt.rcParams['axes.unicode_minus'] = False
二、定义文件路径并获取数据
#日期集合
riqi = ['02.**','02.**','02.**','02.**','02.**']
#文件路径
path = 'C:/Users/chen/Downloads/' + riqi[i]+'日外呼.xls'
#获取数据
data = pd.read_excel(path,1)#读取Excel文件第二个工作表的内容,CSV文件读取用pd.read_csv(path)
#展示数据
display(data.head(5),data.tail(5))#展示前5行,展示后5行
#查看数据分布情况
#data.info()#查看数据类型/n#data.duplicated().sum()#查看非空、重复值情况
#查看数据是否有异常值
#data.describe()#描述性统计
2.1对数据进行转化(由于数据转化后续也会用到所以定义一个函数)
#定义数据处理函数
def sjchuli(data)
#处理模板名称
ccmc = ['a话术','abcde','bcft']#原始需处理的名称
ccmc1 = ['a','ab','bc']#需要的替换后的名称
l = len(ccmc)#获取需处理的数量
hs = data['模板名称']#存储需处理的数据
#循环处理模板名称
for i in hs.index:
n = str(hs[i])
for m in range(0,l):
ret = re.findall(".*" + ccmc[m]+ ".*",n)
#display(n,ret)
#判断是否需进行处理
if len(ret) > 0:
hs[i] = n.replace(ccmc[m],ccmc1[m])
break
#display(hs1[i],m,ccmc1[m],ccmc[m])
hs = pd.DataFrame(hs)#将数据转化格式
#display(hs)
data['模板名称'] = hs#将处理后的数据赋值替换
#处理模板名称,提取中间或者前面的话术
#示例: 模板名称:张三_话费券活动_a分行 转化为话术名称: 话费券活动
mbname = data['模板名称'].str.split('_',expand = True) #对模板名称拆分并存储
#循环判断并获取需要的话术名称
huashu = []#定义话术存储变量
for i in mbname.index:
n1 = str(mbname.loc[i][0])#获取列1
n2 = str(mbname.loc[i][1])#获取列2
if len(n1) >5:
huashu.append(n1)
else:
huashu.append(n2)
#display(huashu)
huashu = pd.DataFrame(huashu)#数据类型转化
#插入话术列
data['话术'] = huashu
#处理分行名称
#删除前缀‘a’
data['组织'] = data['组织'].str.strip("a")
#删除后缀‘b’
data['组织'] = data['组织'].str.strip("b")
#display(data)
return data
三、处理分行数据并画图
3.1处理分行数据