python 表格制作_Python 图表制作

学习使用Python做简单图表

分析目标:探查成为地市级党委书记与各类因素的关系,共六个表格

使用数据:“地市级党委书记数据库”,以Excel格式保存

先把数据文件导出为.csv格式文件

代码如下

import numpy as np

import pandas as pd

import matplotlib.pyplot as plt

data = pd.read_csv("C:\\Users\\HY\\Desktop\\python视频\\微专业\\数据资料\\地市级党委书记数据库(2000-10).csv",engine = 'python',encoding = "gbk")

# 年龄情况:整体年龄分布 / 入职年龄分布 / 卸任年龄分布

data_age = data[['出生年份','党委书记姓名','年份']]

data_age_re = data_age[data_age['出生年份'].notnull()]

# 新建变量data_age,赋值包括年份、出生年份字段内容

# 清除缺失值

df1 = 2017 - data_age_re['出生年份']

# 计算出整体年龄数据

df_yearmin = data_age_re[['党委书记姓名','年份']].groupby(data_age_re['党委书记姓名']).min()

df2 = df_yearmin['年份'].groupby(df_yearmin['年份']).count()

# 计算出入职年龄数据

df_yearmax = data_age_re[['党委书记姓名','年份']].groupby(data_age_re['党委书记姓名']).max()

df3 = df_yearmax['年份'].groupby(df_yearmax['年份']).count()

# 计算出卸任年龄数据

# 专业情况:专业结构 / 专业整体情况 / 专业大类分布

data_major = data[['党委书记姓名','年份','专业:人文','专业:社科','专业:理工','专业:农科','专业:医科']]

data_major_re = data_major[data_major['专业:人文'].notnull()]

# 新建变量data_major,赋值包括年份、专业等字段内容,其中1代表是,0代表否

# 清除缺失值

data_major_re['专业'] = data_major_re[['专业:人文', '专业:社科', '专业:理工', '专业:农科', '专业:医科']].idxmax(axis=1)

# 统计每个人的专业

data_major_st = data_major_re[['专业','党委书记姓名']].drop_duplicates()

# 去重

df4 = data_major_st['专业'].groupby(data_major_st['专业']).count()

# 计算出学历结构数据

df5 = pd.crosstab(data_major_re['年份'], data_major_re['专业'])

# 计算每年专业整体情况数据

df5['社科比例'] = df5['专业:社科'] / (df5['专业:理工'] + df5['专业:医科'] + df5['专业:社科'] + df5['专业:农科'] + df5['专业:人文'])

df5['人文比例'] = df5['专业:人文'] / (df5['专业:理工'] + df5['专业:医科'] + df5['专业:社科'] + df5['专业:农科'] + df5['专业:人文'])

df5['理工农医比例'] = (df5['专业:理工'] + df5['专业:医科'] + df5['专业:农科'])/ (df5['专业:理工'] + df5['专业:医科'] + df5['专业:社科'] + df5['专业:农科'] + df5['专业:人文'])

# 计算每年专业大类分布数据

# 年龄情况:图表绘制

fig_q2 = plt.figure(figsize = (12,8))

# 创建一个图表,大小为12*8

ax1 = fig_q2.add_subplot(2,3,1)

ax2 = fig_q2.add_subplot(2,3,2)

ax3 = fig_q2.add_subplot(2,3,3)

ax4 = fig_q2.add_subplot(2,3,4)

ax5 = fig_q2.add_subplot(2,3,5)

ax6 = fig_q2.add_subplot(2,3,6)

# 创建一个3*2的表格矩阵

ax1.hist(df1,bins = 11,color = 'gray', alpha=0.9) #bins N个条形

ax1.set_title('整体年龄分布')

ax1.grid(True) #加网格

# 绘制第一个表格

ax2.plot(df2,color = 'r',marker = 'o',alpha=0.9) #marker节点是什么

ax2.set_title('入职年龄分布')

ax2.set_xticks(range(2000,2011,2))

ax2.grid(True)

# 绘制第二个表格

ax3.plot(df3,color = 'g',marker = 'o',linestyle = "dashed",alpha=0.9) #linestyle设置虚线

ax3.set_title('卸任年龄分布')

ax3.set_xticks(range(2000,2011,2))

ax3.grid(True)

# 绘制第三个表格

ax4.bar(range(len(df4)),df4,color = 'y')

ax4.set_xticklabels(['人文','农科','医科','理工','社科'])

ax4.grid(True)

ax4.set_title('专业结构')

# 绘制第四个表格

ax5.plot(df5.index,df5[['专业:人文','专业:农科','专业:医科','专业:理工','专业:社科']])

ax5.grid(True)

ax5.set_title('专业整体情况')

# 绘制第五个表格

ax6.bar(df5.index,df5['社科比例'],color = 'darkred',alpha=0.7)

ax6.bar(df5.index,df5['人文比例'],color = 'darkred',bottom = df5['社科比例'],alpha=0.5)

ax6.bar(df5.index,df5['理工农医比例'],color = 'darkred',bottom = df5['人文比例'] + df5['社科比例'],alpha=0.3)

ax6.grid(True)

ax6.set_title('专业大类分布:社科、人文、理工农医')

# 绘制第六个表格

plt.show()

代码运行结果如下

探查成为地市级党委书记与各类因素的关系.png

图一:整体年龄分布(直方图)

图二:入职年龄分布(折线图)

图三:卸任年龄分布(折线图)

图四:专业结构(条形图)

图五:专业整体情况(折线图)

图六:专业大类分布情况(堆积图)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值