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可视化代码相关推荐

  1. Python 根据生成的txt对多目标跟踪结果画框可视化显示

    Python 根据生成的txt对多目标跟踪结果画框可视化显示 2022.1.3更新 输入为视频文件与多目标跟踪结果生成的txt文件(格式与gt一致) 输出为视频文件 draw_mot.py impor ...

  2. 我的第一篇博客:Python爬取新浪财经股票页面 并用matplotlib可视化输出结果

    (由于疫情在家闲着,开学至少得等到四月份,便在上个星期动起了学习python的念头,凭借着大一C语言微薄的基础草草学习语法后便开始了学写爬虫.跟着教学视频爬了几个静态网站后便开始尝试爬动态网站,同时也 ...

  3. 【Python基础】50个令人大开眼界的 Matplotlib 可视化项目

    本文由和鲸创作者@lqy上传,翻译自machinelearningplus.com,来源链接: https://www.machinelearningplus.com/plots/top-50-mat ...

  4. 使用python自动生成病例数据并导出excel(附代码)

    因为实验需要处理大量的数据,便考虑进行自动生成,结果如下 代码如下 import time import random province=['河北','山西','辽宁','吉林','黑龙江','江苏' ...

  5. 利用python爬取空气质量数据,并用Matplotlib模块画出分析图

    爬取到的数据 分析图: 源代码: import csv import random import time import pandas as pd import requests from bs4 i ...

  6. 【数据分析】Matplotlib可视化最有价值的图表之——1、关联(Correlation)

      本文总结了 Matplotlib 以及 Seaborn 用的最多的 50 个图形,掌握这些图形的绘制,对于数据分析的可视化有莫大的作用,运行本文代码,除了安装 matplotlib 和 seabo ...

  7. 全球新闻数据可视化(2)--php连接数据库与数据可视化

    上次文章主要介绍了全球新闻数据的下载,以及一些基本的利用python进行处理操作,本次介绍相关数据的查询和可视化操作. (7条消息) 全球新闻数据可视化(1)--数据下载与处理_小汤爱学习的博客-CS ...

  8. python使用sklearn中的make_blobs函数生成聚类(clustering)分析需要的仿真数据、matplotlib可视化生成的仿真数据

    python使用sklearn中的make_blobs函数生成聚类(clustering)分析需要的仿真数据.matplotlib可视化生成的仿真数据 目录

  9. Python使用matplotlib可视化绘制并通过Tkinter生成按钮将可视化结果导出为pdf文件

    Python使用matplotlib可视化绘制并通过Tkinter生成按钮将可视化结果导出为pdf文件 目录 Python使用matplotlib

最新文章

  1. visual studio installer正在提取文件_并非危言耸听,赶紧检查自己网盘内的私密文件...
  2. 创建, 发布自己的 Vue UI 组件库
  3. 问题 D: 约数的个数
  4. 修改数据表部分字段方法封装-及-动态生成对象并动态添加属性
  5. [Leedcode][JAVA][第470题][Ran7()实现Rand10()]
  6. Python_列表生成式
  7. Flex一个RemoteObject调用JAVA对象里面的多个方法
  8. 华为交换机查看当前配置
  9. 视频录制软件哪个好,推荐几款简单实用的视频课件录制软件
  10. windows 匿名管道: 父进程与子进程通信 (进程间通信之CreatePipe)
  11. 保险中介系列法规年内出台
  12. 蓝狐笔记:DeFi现在仍处在初级阶段 | FBEC 2020特别策划
  13. SSL2893 谷仓的安保
  14. win10下安装matlab r2018a破解版
  15. Kubernetes kubeadm部署
  16. 神州信息“六合上甲”再获殊荣
  17. ICPC2021(沈阳)
  18. connect的中文意思是什么_connect是什么意思?
  19. 告警系统主脚本 告警系统配置文件 告警系统监控项目
  20. IP地址、URL及域名的相关概念

热门文章

  1. A Strong Baseline and Batch Normalization Neck for Deep Person Re-identification(论文笔记)(2019CVPR)
  2. 计算机中桌面位置更改,如何更改桌面文件路径 电脑桌面优化技巧
  3. 2020-12-2 IDEA2020.2 提示Typo:In word ‘XXXX’ 解决方法
  4. 服务器上传,时间超时 tomcat 如何设置保持连接
  5. html中如何插入pdf文件,如何创建PDF文件
  6. java Calendar日历类
  7. NLP任务中, 被pad和unk的向量应该赋值为zero还是random呢?
  8. Cookie的设置域名domain与跨域的问题
  9. openCV人脸识别简单案例
  10. 天翼光猫虚拟服务器怎么设置,电信光猫设置经验图解手把手教你(超级详细),换光猫怎么重新设置...