python连接数据库生成可视化_python3.6 连接数据库并用matplotlib可视化代码
python3连接数据库并用matplotlib可视化代码,自己保存的代码,希望大神可以优化!
###############数据库连接并导入相应的表+表头######################################
######mysql数据库
import pymysql
def data_out_sql(DB, sql):
conn = pymysql.connect(host=DB['host'], port=DB['port'], user=DB['user'], passwd=DB['password'], db=DB['dbname'],
charset='utf8')
# 创建游标
cursor = conn.cursor()
# 执行sql语句
cursor.execute(sql)
# 调出数据
data = cursor.fetchall()
# cols为字段信息 例如(('factory_id', 253, None, 6, 6, 0, False), ('szDeviceId', 253, None, 30, 30, 0, False),('update_time', 7, None, 19, 19, 0, False))
cols = cursor.description
# 执行
conn.commit()
conn.close()
# 将数据truple转换为DataFrame
col = []
for i in cols:
col.append(i[0])
data = list(map(list, data))
data = pd.DataFrame(data,columns=col)
print(data)
return data
####postgresql数据库
#导入包
import psycopg2
import pandas as pd
#连接数据库
dbconn = psycopg2.connect(database="****", user="****", password="*****", host="52.82.58.0", port="5432")
print("Opened database successfully")
#读入表
cur = dbconn.cursor()
cur.execute("SELECT * from zzn_all_school_order_user_account_info_test_m")
data = cur.fetchall()
cols = cur.description
cur.close()
dbconn.close()
#加上表头
col=[]
for i in cols:
col.append(i[0])
data=list(map(list,data))
data=pd.DataFrame(data,columns=col)
#把表读为DataFrame格式
df=pd.DataFrame(data,columns=col)
#每个学校和每个月收益条形图
var = df.groupby(['order_time_m','school_name']).total_trevene.sum()
fig = plt.figure(figsize=(15, 15))
ax1 = fig.add_subplot(1,1,1)
ax1.set_xlabel('order_time_m and school_name',fontsize=20)
ax1.set_ylabel('Sum of total_trevene',fontsize=20)
ax1.set_title("order_time_m and school_name wise Sum of total_trevene",fontsize=20)
var.plot(kind='bar')
#每个月收益条形图
var = df.groupby(['order_time_m']).total_trevene.sum()
fig = plt.figure(figsize=(15, 15))
ax1 = fig.add_subplot(1,1,1)
ax1.set_xlabel('order_time_m',fontsize=20)
ax1.set_ylabel('Sum of total_trevene',fontsize=20)
ax1.set_title(" Sum of total_trevene",fontsize=20)
var.plot(kind='bar')
#每个月所有学校收益累加图
var1 = df.groupby(['order_time_m']).total_trevene.sum()
var2=var1.cumsum()
fig = plt.figure(figsize=(15, 15))
ax1 = fig.add_subplot(1,1,1)
ax1.set_xlabel('order_time_m',fontsize=20)
ax1.set_ylabel('Sum of total_trevene',fontsize=20)
ax1.set_title(" Sum of total_trevene",fontsize=20)
var2.plot(kind='line')
#累加图+柱形图
var = df.groupby(['order_time_m']).total_trevene.sum()
fig = plt.figure(figsize=(15, 15))
ax = fig.add_subplot(1,1,1)
var.plot(kind='bar')
ax1 = ax.twinx()
ax1 = ax.twiny()
var1 = df.groupby(['order_time_m']).total_trevene.sum()
var2=var1.cumsum()
var2.plot(kind='line')
ax.legend(loc=0)
ax.grid()
ax1.set_xlabel('order_time_m',fontsize=20)
ax1.set_ylabel('Sum of total_trevene',fontsize=20)
ax1.set_title(" Sum and cumsum of total_trevene",fontsize=20)
ax1.legend(loc=0)
plt.show()
##### 包月净收入及累积
df1=df[df['product_duration_month']==1]
var_1=df1.groupby(['order_time_m']).xinlu_avgevene.sum()
fig = plt.figure(figsize=(15, 15))
ax = fig.add_subplot(1,1,1)
var_1.plot(kind='bar')
ax1 = ax.twinx()
ax1 = ax.twiny()
df2=df[df['product_duration_month']==1]
var1_m=df2.groupby(['order_time_m']).xinlu_avgevene.sum()
var1_cum=var1_m.cumsum()
var1_cum.plot(kind='line')
ax.legend(loc=0)
ax.grid()
ax1.set_xlabel('order_time_m',fontsize=20)
ax1.set_ylabel('month Sum of xinlu_avgevene_cum',fontsize=20)
ax1.set_title("month Sum and cumsum of xinlu_avgevene_cum",fontsize=20)
ax1.legend(loc=0)
#设置刻度
plt.tick_params(labelsize=15)
labels = ax1.get_xticklabels() + ax1.get_yticklabels()
[label.set_fontname('SimHei') for label in labels]
plt.show()
##### 包学期净收入及累积
df3=df[df['product_duration_month']==5]
var5_m=df3.groupby(['order_time_m']).xinlu_avgevene_cum.max()
fig = plt.figure(figsize=(15, 15))
ax = fig.add_subplot(1,1,1)
var5_m.plot(kind='bar')
ax1 = ax.twinx()
ax1 = ax.twiny()
df4=df[df['product_duration_month']==5]
var5_sm=df4.groupby(['order_time_m']).xinlu_avgevene_cum.max()
var5_cum=var5_sm.cumsum()
var5_cum.plot(kind='line')
ax.legend(loc=0)
ax.grid()
ax1.set_xlabel('order_time_m',fontsize=20)
ax1.set_ylabel('semester Sum of xinlu_avgevene_cum',fontsize=20)
ax1.set_title("semester Sum and cumsum of xinlu_avgevene_cum",fontsize=20)
ax1.legend(loc=0)
#设置刻度
plt.tick_params(labelsize=15)
labels = ax1.get_xticklabels() + ax1.get_yticklabels()
[label.set_fontname('SimHei') for label in labels]
plt.show()
###包月+包学期
var_m=var_1+var5_m
fig = plt.figure(figsize=(15, 15))
ax = fig.add_subplot(1,1,1)
var_m.plot(kind='bar')
ax1 = ax.twinx()
ax1 = ax.twiny()
var_cum=var1_cum+var5_cum
var_cum.plot(kind='line')
ax.legend(loc=0)
ax.grid()
ax1.set_xlabel('order_time_m',fontsize=20)
ax1.set_ylabel('semester and month Sum of xinlu_avgevene_cum',fontsize=20)
ax1.set_title("semester and month Sum and cumsum of xinlu_avgevene_cum",fontsize=20)
ax1.legend(loc=0)
#设置刻度
plt.tick_params(labelsize=15)
labels = ax1.get_xticklabels() + ax1.get_yticklabels()
[label.set_fontname('SimHei') for label in labels]
plt.show()
##分学校分月总人数
sum_people=df.groupby(['order_time_m','school_name','product_name','payed_type_case']).people_co.sum()
len(sum_people)
list3=sum_people.tolist()
##分学校分月总净收入
List2=df.groupby(['order_time_m','school_name','product_name','payed_type_case']).order_co.sum()
list2=List2.tolist()
List1=df.groupby(['order_time_m','school_name','product_name','payed_type_case']).avg_reven_mon.sum()
len(List1)
arpu=[]
for i in range(len(list1)):
arpu.append(list1[i]*list2[i]/list3[i])
y=arpu
from pandas.core.frame import DataFrame
df1=df[['order_time_m','school_name','product_name','payed_type_case','arpu']]
df1
##ARPU画图
var_arpu=df1.groupby(['order_time_m','school_name']).arpu.mean()
fig = plt.figure(figsize=(15, 15))
ax = fig.add_subplot(1,1,1)
var_arpu.plot(kind='bar')
#设置刻度
plt.tick_params(labelsize=15)
labels = ax.get_xticklabels() + ax.get_yticklabels()
[label.set_fontname('SimHei') for label in labels]
plt.show()
##每笔订单的散点图
df.plot.scatter(x='order_co',y='xinlu_trevene')
##热力图
df0=df[['order_time_m','school_name','product_name','payed_type_case','reven']]
target = pd.pivot_table(df0, index='order_time_m',columns='school_name',values= 'reven')
fig = plt.figure(figsize=(15, 15))
ax = fig.add_subplot(1,1,1)
plt.imshow(target, cmap=plt.cm.hot)
plt.colorbar(shrink=0.5)
#设置刻度
plt.tick_params(labelsize=15)
labels = ax.get_xticklabels() + ax.get_yticklabels()
[label.set_fontname('SimHei') for label in labels]
plt.show()
##各学校收入占比 饼状图
schoo_sum=df.groupby('school_name').xinlu_trevene.sum()
xinlu_sum=df['xinlu_trevene'].sum()
y1=schoo_sum/xinlu_sum.tolist()
#labels = '西北大学', '西安交通大学', '西安科技大学', '陕西中医药大学','西安邮电大学','西安欧亚学院','咸阳师范学院' # 设置标签
#sizes = [xibei_sum/xinlu_sum, xj_sum/xinlu_sum, xike_sum/xinlu_sum, shanxizy_sum/xinlu_sum,xy_sum/xinlu_sum,ouya_sum/xinlu_sum,xianyang_sum/xinlu_sum] # 占比,和为100
labels='咸阳师范学院','西北大学','西安交通大学','西安欧亚学院','西安科技大学','西安邮电大学','陕西中医药大学'
sizes=y1
colors = ['yellowgreen', 'gold', 'lightskyblue', 'lightcoral'] # 颜色
explode = (0, 0.1, 0, 0,0,0,0) # 展开第二个扇形,即Hogs,间距为0.1
plt.pie(sizes, explode=explode, labels=labels, colors=colors, autopct='%1.1f%%', shadow=True,
startangle=90) # startangle控制饼状图的旋转方向
plt.axis('equal') # 保证饼状图是正圆,否则会有一点角度偏斜
plt.show()
#### 各学校订单数环形图
vals1=df.groupby('school_name').order_co.sum()
vals2=df.order_co.sum()
y2=vals1/vals2
y3=y2.tolist()
val1 = y3
#val2 = y3
val3=[1]
fig, ax = plt.subplots()
labels = '咸阳师范学院', '西北大学', '西安交通大学', '西安欧亚学院','西安科技大学','西安邮电大学','陕西中医药大学'
ax.pie(val1, radius=1.2,autopct='%1.1f%%',pctdistance=0.9)
#ax.pie(val2, radius=1,autopct='%1.1f%%',pctdistance=0.75)
ax.pie(val3, radius=0.6,colors='w')
ax.set(aspect="equal", title='Pie plot with `ax.pie`') #plt.legend()
plt.legend(labels,bbox_to_anchor=(1, 1), loc='best', borderaxespad=0.)
plt.show()
python连接数据库生成可视化_python3.6 连接数据库并用matplotlib可视化代码相关推荐
- Python 根据生成的txt对多目标跟踪结果画框可视化显示
Python 根据生成的txt对多目标跟踪结果画框可视化显示 2022.1.3更新 输入为视频文件与多目标跟踪结果生成的txt文件(格式与gt一致) 输出为视频文件 draw_mot.py impor ...
- 我的第一篇博客:Python爬取新浪财经股票页面 并用matplotlib可视化输出结果
(由于疫情在家闲着,开学至少得等到四月份,便在上个星期动起了学习python的念头,凭借着大一C语言微薄的基础草草学习语法后便开始了学写爬虫.跟着教学视频爬了几个静态网站后便开始尝试爬动态网站,同时也 ...
- 【Python基础】50个令人大开眼界的 Matplotlib 可视化项目
本文由和鲸创作者@lqy上传,翻译自machinelearningplus.com,来源链接: https://www.machinelearningplus.com/plots/top-50-mat ...
- 使用python自动生成病例数据并导出excel(附代码)
因为实验需要处理大量的数据,便考虑进行自动生成,结果如下 代码如下 import time import random province=['河北','山西','辽宁','吉林','黑龙江','江苏' ...
- 利用python爬取空气质量数据,并用Matplotlib模块画出分析图
爬取到的数据 分析图: 源代码: import csv import random import time import pandas as pd import requests from bs4 i ...
- 【数据分析】Matplotlib可视化最有价值的图表之——1、关联(Correlation)
本文总结了 Matplotlib 以及 Seaborn 用的最多的 50 个图形,掌握这些图形的绘制,对于数据分析的可视化有莫大的作用,运行本文代码,除了安装 matplotlib 和 seabo ...
- 全球新闻数据可视化(2)--php连接数据库与数据可视化
上次文章主要介绍了全球新闻数据的下载,以及一些基本的利用python进行处理操作,本次介绍相关数据的查询和可视化操作. (7条消息) 全球新闻数据可视化(1)--数据下载与处理_小汤爱学习的博客-CS ...
- python使用sklearn中的make_blobs函数生成聚类(clustering)分析需要的仿真数据、matplotlib可视化生成的仿真数据
python使用sklearn中的make_blobs函数生成聚类(clustering)分析需要的仿真数据.matplotlib可视化生成的仿真数据 目录
- Python使用matplotlib可视化绘制并通过Tkinter生成按钮将可视化结果导出为pdf文件
Python使用matplotlib可视化绘制并通过Tkinter生成按钮将可视化结果导出为pdf文件 目录 Python使用matplotlib
最新文章
- visual studio installer正在提取文件_并非危言耸听,赶紧检查自己网盘内的私密文件...
- 创建, 发布自己的 Vue UI 组件库
- 问题 D: 约数的个数
- 修改数据表部分字段方法封装-及-动态生成对象并动态添加属性
- [Leedcode][JAVA][第470题][Ran7()实现Rand10()]
- Python_列表生成式
- Flex一个RemoteObject调用JAVA对象里面的多个方法
- 华为交换机查看当前配置
- 视频录制软件哪个好,推荐几款简单实用的视频课件录制软件
- windows 匿名管道: 父进程与子进程通信 (进程间通信之CreatePipe)
- 保险中介系列法规年内出台
- 蓝狐笔记:DeFi现在仍处在初级阶段 | FBEC 2020特别策划
- SSL2893 谷仓的安保
- win10下安装matlab r2018a破解版
- Kubernetes kubeadm部署
- 神州信息“六合上甲”再获殊荣
- ICPC2021(沈阳)
- connect的中文意思是什么_connect是什么意思?
- 告警系统主脚本 告警系统配置文件 告警系统监控项目
- IP地址、URL及域名的相关概念
热门文章
- A Strong Baseline and Batch Normalization Neck for Deep Person Re-identification(论文笔记)(2019CVPR)
- 计算机中桌面位置更改,如何更改桌面文件路径 电脑桌面优化技巧
- 2020-12-2 IDEA2020.2 提示Typo:In word ‘XXXX’ 解决方法
- 服务器上传,时间超时 tomcat 如何设置保持连接
- html中如何插入pdf文件,如何创建PDF文件
- java Calendar日历类
- NLP任务中, 被pad和unk的向量应该赋值为zero还是random呢?
- Cookie的设置域名domain与跨域的问题
- openCV人脸识别简单案例
- 天翼光猫虚拟服务器怎么设置,电信光猫设置经验图解手把手教你(超级详细),换光猫怎么重新设置...