数据可视化报告

#导入相关数据库
import pandas as pd
import numpy as np
from pyecharts import options as opts
from pyecharts.charts import Bar
from pyecharts.charts import Line
from pyecharts import options
import matplotlib.pyplot as plt
from pywaffle import Waffle
from pyecharts.charts import TreeMap
# 导入tushare
import tushare as ts
# 初始化pro接口
pro = ts.pro_api('*****************************************')

# 拉取数据
df = pro.daily(**{
    "ts_code": "",
    "trade_date": 20220222,
    "start_date": "",
    "end_date": "",
    "offset": "",
    "limit": ""
}, fields=[
    "ts_code",
    "trade_date",
    "open",
    "high",
    "low",
    "close",
    "pre_close",
    "change",
    "pct_chg",
    "vol",
    "amount"
])

2.1 股票跌幅前10位股票的条形图

#引入相关数据
A = pd.read_csv(r'各省参会人数.csv',encoding="gb18030")
B = pd.read_csv(r'NPC.csv')
C = pd.read_csv(r'genderratio.csv')
D = df.sort_values(by="change" , inplace=True, ascending=False)
v1 = df['change'].tolist()
v2 = df['ts_code'].tolist()
bar=(
    Bar()
    .add_xaxis(v2[-10:])
    .add_yaxis('股票代码',v1[-10:])
    .reversal_axis()
    .set_series_opts(label_opts=opts.LabelOpts(position="right"))
    .set_global_opts(title_opts=opts.TitleOpts(title="2020年2月22日跌幅最大的十支股票"))  
)
bar.render_notebook()

在这里插入图片描述

2.2 各年龄层中男性和女性参会人数累计柱状图

bins=[1919,1930,1940,1950,1960,1970,1980,1990,2000]
labels=['20后','30后','40后','50后','60后','70后','80后','90后']
B['年龄段']=pd.cut(
        B['Birth year'],
        bins,
        right=False,
        labels=labels)
B1 = B.loc[B["性别"] == "男"]
B2 = B.loc[B["性别"] == "女"]
num1 = []
num2 = []
for i in labels:
    num = len(B1.loc[B1["年龄段"]== i])
    num1.append(num)
for i in labels:
    num = len(B1.loc[B1["年龄段"]== i])
    num2.append(num)
 
bar = (
    Bar()
    .add_xaxis(labels)
    .add_yaxis('女',num2,stack='1',gap="0%")
    .add_yaxis('男',num1,stack='1',gap="0%")
    .set_series_opts(label_opts=opts.LabelOpts(is_show=False))
    .set_global_opts(title_opts=opts.TitleOpts(title='全国人大代表年龄的分布',subtitle="平均年龄为53.77岁"),
                     xaxis_opts=opts.AxisOpts(name='年龄段'),       
                     yaxis_opts=opts.AxisOpts(name='人数'))
)
bar.render_notebook()

在这里插入图片描述

2.3 近四届全国人大代表的性别比例折线图

v1 = C['n'].tolist()
v2 = C['female'].tolist()
v3 = C['male'].tolist()
line = Line()
line.add_xaxis(v1)
line.add_yaxis('female',v2)
line.add_yaxis('male',v3)
line.set_global_opts(title_opts=options.TitleOpts(title='近四届全国人大代表的性别比例'))
line.render_notebook()

在这里插入图片描述

2.4 华夫饼图

labels1=['本科','博士研究生','大专','高中及以下','硕士研究生','未知']
labels2=['法学','工学','管理学','经济学','教育学','军事','理学','历史','农学','未知','文学','医学','艺术','哲学']
num1 = []
num2 = []
for i in labels1:
    num = len(B.loc[B["学历"]== i])
    num1.append(num)
for i in labels2:
    num = len(B.loc[B["人文社科拆后专业"]== i])
    num2.append(num)

data = dict(zip(labels1, num1))
plt.rcParams['font.sans-serif']=['Simhei'] 
total = sum(data.values())
plt.figure(
    FigureClass=Waffle,
    rows=5,
    columns=10,
    values=data,
    # 设置图例的位置
    legend={'loc': 'upper left', 'bbox_to_anchor': (1, 1)},
    labels = ['{} {:.1f}%'.format(k, (v/total*100)) for k, v in data.items()],
    dpi=100
)
plt.show()

在这里插入图片描述

2.5 矩形树图

values = [[253,449,256,24,33,0,65,30,26],[296,131,81,104],[1198]] # 二层节点数值
names = [['法学','管理学','经济学','教育学','军事','历史','文学','艺术','哲学'],['工学','理学','农学','医学'],['未知']]  # 第二层节点名称
childs = [
    [{'name':name[i], 'value':value[j]} for i,j in zip(range(len(name)),range(len(value)))]  
    for name,value in zip(names, values)
]
data = [{'name':i, 'value':j, 'children': m} for i,j,m in zip(['Fruits','Vegetables','Others'],[54,77,36],childs)]
treemap = TreeMap(init_opts=opts.InitOpts(height='450px',width='850px'))
treemap.add(series_name='各专业参会人数',data=data,leaf_depth=2,
           )
treemap.set_global_opts(title_opts=opts.TitleOpts(title='各专业参会人数'))
treemap.render_notebook()

在这里插入图片描述
本人是一个金融本科生在读,也是第一次写文章,哈哈,也只是把作业的内容整理了一下,分享了出来。学习编程有一段时间了,起初是因为课程需要,后来觉得这些东西确实蛮有意思的,就自己学了起来,后续会接着分享自己的学习体会,也期望和大家交流,一起进步。

文章中所有代码,来源于网络加上自己的删删改改,如果有侵权的话,非常抱歉,请联系我。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值