一、导入库
在python中,对于数据分析处理的部分,一般是用到numpy/pandas以及matplotlib部分,这三个库如果你是使用pycharm的话,还是需要去工具那边安装这些包,或者使用jupyter需要用到pip install命令来安装,安装好这些之后,就可以导入它们进行使用了。
下列代码是具体引用的例子,因为我们需要连接数据库获取其中的数据,所以我们导入了pymysql这个库:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']#设置中文字体为黑体
plt.rcParams['axes.unicode_minus'] = False #正常显示负号
import pymysql
import pandas as pd
二、数据库导入数据
1.打开mysql(没有用过mysql的同学可以自行百度安装),创建一个数据库(为了查询方便,我直接命为shop)
2.在数据库中我们导入表(导入数据数据库有导入向导,按照它的提示一步步来,都不会有太大的问题)
导入成功后,我们在数据库中的表中查看shop表的数据,发现如下图所示:
我们可以知道表中的数据被成功的导入了进来
三、连接数据库
数据导入成功之后,我们就可以进行python连接数据库的部分了:
mydb=pymysql.connect(
host='localhost',
user='root',
database='shop',
passwd='123456'
)
print(mydb)
这是一个最简单的连接数据库的操作,将信息正确的输入进去之后,就可以进行提取数据了
首先创建一个游标(不明白游标的同学可以自己百度一下,是数据库中非常常用一种操作,黄金矿工大家都玩过,就是类似于他的钩子,我们需要借助到钩子才可以挖到更多的黄金,就如同数据库中的数据一样)
cursor = mydb.cursor(pymysql.cursors.DictCursor)
接下来执行sql语句,然后将查询结果返回到result,最后在利用DataFrame将数据转化为此类型:
cursor=mydb.cursor(pymysql.cursors.DictCursor)
sql='''
select *
from shop
where month(日期) in (6,7)
'''
cursor.execute(sql)
result=cursor.fetchall()
shop=pd.DataFrame(result)
四、了解数据
查询到数据之后,我们就需要了解一下数据,知道大概是什么样子的,用info方法来了解数据框架,head方法了解详细数据:
shop.info()
shop.head()
shop.describe()
在数据中,我们会发现有一些空值,这时候需要用到fillna方法:
shop.fillna(0,inplace=True) #我们采用fillna进行0值填充
五、数据可视化
1.六七月份各平台的gmv占比:
#绘制出各平台在6、7月的GMV占比 (饼图)
pin_tai = shop[['平台','GMV']].groupby('平台').agg(GMV = ('GMV','sum'))
#我们按照平台进行分组,对GMV进行聚合
pin_tai = pd.Series(pin_tai.GMV,index=pin_tai.index)
#将DataFrame类型转换为Series类型
plt.pie(pin_tai,autopct='%2.1f%%',labels=['饿了么','美团'])
#调用pie方法,传入数据pin_tai;autopct:数据标签;%2.1f 输出宽度为2的浮点数,小数点宽度为1;labels 为标签
可以得到结果:
2.六七月份各种的gmv情况:
#绘制出6-7月的GMV
shop.日期 = pd.to_datetime(shop.日期)
#先对日期格式转换为datetime64格式,方便我们对日期进行采样操作
shop['下单率'] = shop.下单人数/shop.进店人数
shop['进店率'] = shop.进店人数/shop.曝光人数
#分别创建字段:下单率&进店率
gmv_rates = shop.groupby(shop.日期).agg(GMV总合 = ('GMV','sum'),进店率 = ('进店率','sum'),下单率 = ('下单率','sum')).resample('1W').asfreq().dropna(how = 'any')
gmv_rates
可以得到结果:
为了更直观的表现,我们采用条形图方法:
plt.bar(gmv_rates.index, gmv_rates.GMV总合, label = 'GMV')
#bar--条形图
#x横坐标为gmv_rates的索引,y纵坐标为gmv_rates的GMV总合
#label--标签名:GMV
plt.legend()
#显示标签
for a,b in zip(gmv_rates.index,gmv_rates.GMV总合):
plt.text(a,b+0.1,'%.0f'%b,ha='center',va='bottom',fontsize=13)
plt.xticks(rotation=-15)
得到如下结果:
3.六七月份各周转化率情况(之前定义了进店率和下单率,可以直接使用):
plt.plot(gmv_rates.index, gmv_rates.进店率,label = '进店率')
plt.plot(gmv_rates.index, gmv_rates.下单率,label = '下单率')
plt.legend()
for a,b in zip(gmv_rates.index, gmv_rates.进店率):
plt.text(a,b+0.01,'%.2f'%b,ha='center',va='bottom',fontsize=13)
for a,b in zip(gmv_rates.index, gmv_rates.下单率):
plt.text(a,b+0.01,'%.2f'%b,ha='center',va='bottom',fontsize=13)
plt.xticks(rotation=-15)
可以得到如下结果:
以上就是利用python进行数据处理可视化的基础方法啦,这只是其中的一些,感谢b站up主戴师兄给我的启发。需要数据源的同学可以点击链接:
https://pan.baidu.com/s/1-jOwaXWArtv8h21B0-uWGg 提取码:wsra