数据可视化pyecharts——数据分析(柱状图、折线图、饼图)

安装

首先确保已经安装了pyecharts库,如果没有,可以通过pip install pyecharts进行安装。

柱状图

  • pyecharts.charts导入Bar,从pyecharts导入options
  • 准备数据(如类别数据x_data和对应的数值数据y_data)。
  • 创建Bar对象,通过add_xaxis添加类别数据,add_yaxis添加数据系列,可设置系列名称。
  • 可以使用set_global_opts设置全局配置项,如标题等,最后使用render方法生成图表文件。

折线图

  • pyecharts.charts导入Line
  • 类似柱状图,准备数据后创建Line对象,添加轴数据。
  • 能设置线条样式、标记点等个性化配置,再通过全局配置项设置相关属性,最后渲染。

饼图

  • pyecharts.charts导入Pie
  • 准备数据(通常是数据和对应的标签)。
  • 创建Pie对象,通过add方法添加数据系列,可设置半径等参数。
  • 同样可配置全局选项,如标题、图例等,完成后进行渲染。

通过这些步骤,可以利用 pyecharts 方便地实现柱状图展示数据对比、折线图展示数据趋势、饼图展示数据占比等数据可视化操作。

数据展示

|---------|----------|------------|------------|----------|----------|-----------|-----------|-----------|----------|-----------|-----------|-----------|-----------|-----------|-----------|-----------|-----------|-----------|-----------|----------|
| | 2019 | 2018 | 2017 | 2016 | 2015 | 2014 | 2013 | 2012 | 2011 | 2010 | 2009 | 2008 | 2007 | 2006 | 2005 | 2004 | 2003 | 2002 | 2001 | 2000 |
| 北京 | 5817.1 | 5785.9176 | 5430.7875 | 5081.26 | 4723.86 | 4027.1609 | 3661.1097 | 3314.934 | 3006.28 | 2353.9301 | 2026.8089 | 1837.3238 | 1492.638 | 1117.1514 | 919.2098 | 744.4874 | 592.5388 | 533.99 | 454.1676 | 344.9968 |
| 天津 | 2410.25 | 2106.2397 | 2310.3552 | 2723.5 | 2667.11 | 2390.3518 | 2079.0716 | 1760.0201 | 1455.13 | 1068.8093 | 821.9916 | 675.6186 | 540.439 | 417.0479 | 331.8507 | 246.18 | 204.5295 | 209.7021 | 163.635 | 133.6069 |
| 河北 | 3742.67 | 3513.8643 | 3233.8332 | 2849.87 | 2649.18 | 2446.6166 | 2295.6203 | 2084.2825 | 1737.77 | 1331.8547 | 1067.1231 | 947.5858 | 789.1198 | 620.534 | 515.7017 | 407.8273 | 335.8263 | 302.3068 | 283.5023 | 248.7621 |
| 山西 | 2347.56 | 2292.6982 | 1867.0022 | 1557 | 1642.35 | 1820.635 | 1701.6227 | 1516.378 | 1213.43 | 969.6652 | 805.8279 | 748.0047 | 597.887 | 583.3752 | 368.3437 | 256.3634 | 186.0547 | 150.8245 | 132.7618 | 114.4762 |
| 内蒙古 | 2059.74 | 1857.6493 | 1703.2095 | 2016.43 | 1964.48 | 1843.6736 | 1720.9843 | 1552.7453 | 1356.67 | 1069.9776 | 850.8588 | 650.6764 | 492.3615 | 343.3774 | 277.4553 | 196.7589 | 138.7157 | 112.8546 | 99.4313 | 95.032 |
| 辽宁 | 2651.96 | 2616.0832 | 2392.7653 | 2200.49 | 2127.39 | 3192.7813 | 3343.8106 | 3105.3785 | 2643.15 | 2004.8352 | 1591.2197 | 1356.0812 | 1082.6948 | 817.6718 | 675.2768 | 529.6405 | 447.049 | 399.6888 | 370.4387 | 295.6274 |
| 吉林 | 1116.86 | 1240.8892 | 1210.9081 | 1263.78 | 1229.35 | 1203.3843 | 1156.9616 | 1041.2514 | 850.1 | 602.4092 | 487.0943 | 422.7961 | 320.6892 | 245.2045 | 207.152 | 166.2807 | 154.0033 | 131.4885 | 121.1015 | 103.8267 |
| 黑龙江 | 1262.64 | 1282.595 | 1243.3118 | 1148.41 | 1165.88 | 1301.312 | 1277.3951 | 1163.1708 | 997.55 | 755.5788 | 641.6627 | 578.2773 | 440.4689 | 386.844 | 318.2056 | 289.42 | 248.8643 | 231.8908 | 213.6398 | 185.3379 |
| 上海 | 7165.1 | 7108.148 | 6642.2638 | 6406.13 | 5519.5 | 4585.5534 | 4109.5086 | 3743.7053 | 3429.83 | 2873.584 | 2540.2975 | 2358.7464 | 2074.4792 | 1576.0742 | 1417.3976 | 1106.1932 | 886.2277 | 719.79 | 609.4719 | 485.3777 |
| 江苏 | 8802.36 | 8630.1605 | 8171.5315 | 8121.23 | 8028.59 | 7233.1426 | 6568.464 | 5860.6884 | 5148.91 | 4079.8595 | 3228.78 | 2731.4074 | 2237.7276 | 1656.682 | 1322.6753 | 980.4939 | 798.1065 | 643.6966 | 572.1473 | 448.3097 |
| 浙江 | 7048 | 6598.212 | 5804.3837 | 5301.98 | 4809.94 | 4122.0211 | 3796.9241 | 3441.2267 | 3150.8 | 2608.4655 | 2142.5131 | 1933.389 | 1649.4981 | 1298.2044 | 1066.5964 | 805.9479 | 706.5607 | 566.8522 | 500.6948 | 342.7745 |
| 安徽 | 3182.54 | 3048.6705 | 2812.4495 | 2672.79 | 2454.3 | 2218.4418 | 2075.075 | 1792.7192 | 1463.56 | 1149.3952 | 863.9175 | 724.6197 | 543.6973 | 428.0265 | 334.017 | 274.6284 | 220.7487 | 200.2154 | 192.1813 | 178.7187 |
| 福建 | 3052.72 | 3007.4087 | 2809.0332 | 2654.83 | 2544.24 | 2362.2138 | 2119.4455 | 1776.1728 | 1501.51 | 1151.4923 | 932.4282 | 833.4032 | 699.4577 | 541.1707 | 432.6003 | 333.523 | 304.7095 | 272.8867 | 274.2846 | 234.1061 |
| 江西 | 2486.51 | 2373.008 | 2247.0624 | 2151.47 | 2165.74 | 1881.8315 | 1621.2358 | 1371.994 | 1053.43 | 778.0922 | 581.3012 | 488.6476 | 389.851 | 305.5214 | 252.9236 | 205.7667 | 168.167 | 140.5457 | 131.979 | 111.5536 |
| 山东 | 6526.64 | 6485.3959 | 6098.6324 | 5860.18 | 5529.33 | 5026.8273 | 4559.9463 | 4059.4301 | 3455.93 | 2749.3842 | 2198.6324 | 1957.0541 | 1675.398 | 1356.2526 | 1073.125 | 828.3306 | 713.7877 | 610.2242 | 573.1793 | 463.6788 |
| 河南 | 4041.6 | 3766.0183 | 3407.2187 | 3153.47 | 3016.05 | 2739.2556 | 2415.4482 | 2040.331 | 1721.76 | 1381.3178 | 1126.0638 | 1008.9009 | 862.0804 | 679.1715 | 537.6514 | 428.7799 | 338.0535 | 296.7179 | 267.7459 | 246.4694 |
| 湖北 | 3388.39 | 3307.0782 | 3248.3159 | 3102.06 | 3005.53 | 2566.8953 | 2191.2221 | 1823.0532 | 1526.91 | 1011.2314 | 814.8653 | 710.8492 | 590.3552 | 476.0823 | 375.5217 | 310.4464 | 259.7636 | 243.4403 | 231.941 | 214.345 |
| 湖南 | 3006.99 | 2860.8443 | 2757.8212 | 2697.88 | 2515.43 | 2262.7859 | 2030.8758 | 1782.156 | 1517.07 | 1081.6901 | 847.6178 | 722.7122 | 606.5508 | 477.9274 | 395.2651 | 320.6279 | 268.6469 | 231.1459 | 205.4078 | 177.0403 |
| 广东 | 12651.46 | 12105.2552 | 11320.3497 | 10390.35 | 9366.78 | 8065.0758 | 7081.4655 | 6229.1804 | 5514.84 | 4517.0445 | 3649.811 | 3310.3235 | 2785.8007 | 2179.4608 | 1807.2044 | 1418.5056 | 1315.5151 | 1201.6126 | 1160.5126 | 910.556 |
| 广西 | 1811.89 | 1681.4466 | 1615.1273 | 1556.27 | 1515.16 | 1422.2803 | 1317.6035 | 1166.0614 | 947.72 | 771.9918 | 620.9888 | 518.4245 | 418.8265 | 342.5788 | 283.0359 | 237.7721 | 203.6578 | 186.732 | 178.6706 | 147.0539 |
| 海南 | 814.13 | 752.6673 | 674.105 | 637.51 | 627.7 | 555.3064 | 481.014 | 409.437 | 340.12 | 270.9915 | 178.242 | 144.8584 | 108.2935 | 81.8139 | 68.6802 | 57.0358 | 51.3205 | 46.2385 | 43.7656 | 39.1995 |
| 重庆 | 2134.88 | 2265.5421 | 2252.3788 | 2227.91 | 2154.83 | 1922.0159 | 1693.2438 | 1703.4885 | 1488.33 | 952.0745 | 655.1701 | 577.5738 | 442.7 | 317.7165 | 256.8072 | 200.6241 | 161.5618 | 157.8651 | 106.1243 | 87.2442 |
| 四川 | 4070.69 | 3911.0092 | 3577.9887 | 3388.85 | 3355.44 | 3061.0684 | 2784.0952 | 2421.2703 | 2044.79 | 1561.6727 | 1174.5927 | 1041.6603 | 850.8606 | 607.585 | 479.6635 | 385.7848 | 336.5917 | 291.8746 | 271.1245 | 233.863 |
| 贵州 | 1767.36 | 1726.8516 | 1613.8377 | 1561.34 | 1503.38 | 1366.6731 | 1206.4146 | 1014.0547 | 773.08 | 533.7309 | 416.4761 | 347.8416 | 285.1375 | 226.8157 | 182.4963 | 149.2855 | 124.5552 | 108.28 | 99.7494 | 85.2324 |
| 云南 | 2073.53 | 1994.3458 | 1886.1687 | 1812.29 | 1808.1 | 1698.0574 | 1611.2955 | 1338.1509 | 1111.16 | 871.1875 | 698.2525 | 614.0518 | 486.7146 | 379.9702 | 312.649 | 263.3618 | 228.9992 | 206.7594 | 191.2799 | 180.745 |
| 西藏 | 222 | 230.3543 | 185.8341 | 155.99 | 137.13 | 124.2708 | 95.0237 | 86.5827 | 54.76 | 36.6473 | 30.0894 | 24.8823 | 20.1412 | 14.5607 | 12.0312 | 10.0188 | 8.1499 | 7.3082 | 6.1108 | 5.3848 |
| 陕西 | 2287.73 | 2243.1391 | 2006.6939 | 1833.99 | 2059.95 | 1890.4044 | 1748.3305 | 1600.6862 | 1500.18 | 958.2065 | 735.2704 | 591.475 | 475.2398 | 362.4805 | 275.3183 | 214.9586 | 177.33 | 150.2934 | 135.8109 | 114.9711 |
| 甘肃 | 850.23 | 871.0537 | 815.7323 | 786.97 | 743.86 | 672.6698 | 607.2717 | 520.3993 | 450.12 | 353.5833 | 286.5898 | 264.965 | 190.9107 | 141.2152 | 123.5026 | 104.16 | 87.6561 | 76.2432 | 69.9485 | 61.2849 |
| 青海 | 282.14 | 272.887 | 246.1961 | 238.51 | 267.13 | 251.6759 | 223.8586 | 186.4165 | 151.81 | 110.2153 | 87.7381 | 71.5692 | 56.7083 | 42.2437 | 33.8222 | 26.996 | 24.0411 | 21.0965 | 19.8241 | 16.5843 |
| 宁夏 | 423.55 | 436.5205 | 417.5888 | 387.66 | 373.4 | 339.8627 | 308.3376 | 263.9569 | 219.98 | 153.5507 | 111.5755 | 95.009 | 80.0312 | 61.357 | 47.7216 | 37.4677 | 30.031 | 26.4714 | 27.5745 | 20.8244 |
| 新疆 | 1577.6 | 1531.4229 | 1466.5189 | 1298.95 | 1330.9 | 1282.3367 | 1128.4875 | 908.9655 | 720.43 | 500.5759 | 388.7848 | 361.0616 | 285.86 | 219.4628 | 180.3184 | 155.704 | 128.2218 | 116.4724 | 95.0933 | 79.0724 |

数据引用处理:

python 复制代码
# 读取 Excel 文件中的数据
data = pd.read_excel('全国各省财政收入.xlsx', index_col=0)
years = list(data.keys())
citys = list(data.index)
citys = [city.replace('省', '').replace('市', '').replace('自治区', '') for city in citys]

重新组织数据

python 复制代码
# 重新组织数据
total_data = {}
for year in years:
    temp = list(data[year])
    total_data[year] = []
    for i in range(len(temp)):
        total_data[year].append({"name": citys[i], "value": temp[i]})
print(total_data)

选取合适代码,进行画图:

对应的代码:

折线图

python 复制代码
# 获取指定年份的图表
def get_year_overlap_chart(year: int) -> Line:
    line = (
        Line()
      .add_xaxis(xaxis_data=[item["name"] for item in total_data[year]])
      .add_yaxis(
            series_name="财政收入",
            y_axis=[item["value"] for item in total_data[year]],
            label_opts=opts.LabelOpts(is_show=False),
        )
      .set_global_opts(
            title_opts=opts.TitleOpts(
                title="{}年全国各省财政收入".format(year), subtitle="数据来源:全国各省财政收入.xlsx"
            ),
            tooltip_opts=opts.TooltipOpts(
                is_show=True, trigger="axis", axis_pointer_type="shadow"
            ),
            legend_opts=opts.LegendOpts(
                selected_map={
                    "财政收入": False,
                }
            ),
        )
    )
    return line


# 生成时间轴的图
timeline = Timeline()
for y in years:
    timeline.add(get_year_overlap_chart(year=y), time_point=str(y))

# 设置时间轴自动播放等属性
timeline.add_schema(is_auto_play=True, play_interval=1000)
timeline.render("finance_indices_2002.html")

柱状图

python 复制代码
# 获取指定年份的图表
def get_year_overlap_chart(year: int) -> Bar:
    bar = (
        Bar()
       .add_xaxis(xaxis_data=[item["name"] for item in total_data[year]])
       .add_yaxis(
            series_name="财政收入",
            y_axis=[item["value"] for item in total_data[year]],
            label_opts=opts.LabelOpts(is_show=False),
        )
       .set_global_opts(
            title_opts=opts.TitleOpts(
                title="{}年全国各省财政收入".format(year), subtitle="数据来源:全国各省财政收入.xlsx"
            ),
            tooltip_opts=opts.TooltipOpts(
                is_show=True, trigger="axis", axis_pointer_type="shadow"
            ),
            legend_opts=opts.LegendOpts(
                selected_map={
                    "财政收入": False,
                }
            ),
        )
    )
    return bar


# 生成时间轴的图
timeline = Timeline()

for y in years:
    timeline.add(get_year_overlap_chart(year=y), time_point=str(y))

# 设置时间轴自动播放等属性
timeline.add_schema(is_auto_play=True, play_interval=1000)
timeline.render("finance_indices_2002.html")
#%%
from pyecharts.charts import Line, Timeline
from pyecharts import options as opts


# 获取指定年份的图表
def get_year_overlap_chart(year: int) -> Line:
    line = (
        Line()
      .add_xaxis(xaxis_data=[item["name"] for item in total_data[year]])
      .add_yaxis(
            series_name="财政收入",
            y_axis=[item["value"] for item in total_data[year]],
            label_opts=opts.LabelOpts(is_show=False),
        )
      .set_global_opts(
            title_opts=opts.TitleOpts(
                title="{}年全国各省财政收入".format(year), subtitle="数据来源:全国各省财政收入.xlsx"
            ),
            tooltip_opts=opts.TooltipOpts(
                is_show=True, trigger="axis", axis_pointer_type="shadow"
            ),
            legend_opts=opts.LegendOpts(
                selected_map={
                    "财政收入": False,
                }
            ),
        )

饼图

python 复制代码
# 获取指定年份的图表
def get_year_overlap_chart(year: int) -> Bar:
    bar = (
        Bar()
       .add_xaxis(xaxis_data=[item["name"] for item in total_data[year]])
       .add_yaxis(
            series_name="财政收入",
            y_axis=[item["value"] for item in total_data[year]],
            label_opts=opts.LabelOpts(is_show=False),
        )
       .set_global_opts(
            title_opts=opts.TitleOpts(
                title="{}年全国各省财政收入".format(year), subtitle="数据来源:全国各省财政收入.xlsx"
            ),
            tooltip_opts=opts.TooltipOpts(
                is_show=True, trigger="axis", axis_pointer_type="shadow"
            ),
            legend_opts=opts.LegendOpts(
                selected_map={
                    "财政收入": False,
                }
            ),
        )
    )
    return bar


# 生成时间轴的图
timeline = Timeline()

for y in years:
    timeline.add(get_year_overlap_chart(year=y), time_point=str(y))

# 设置时间轴自动播放等属性
timeline.add_schema(is_auto_play=True, play_interval=1000)
timeline.render("finance_indices_2002.html")
#%%
from pyecharts.charts import Line, Timeline
from pyecharts import options as opts


# 获取指定年份的图表
def get_year_overlap_chart(year: int) -> Line:
    line = (
        Line()
      .add_xaxis(xaxis_data=[item["name"] for item in total_data[year]])
      .add_yaxis(
            series_name="财政收入",
            y_axis=[item["value"] for item in total_data[year]],
            label_opts=opts.LabelOpts(is_show=False),
        )
      .set_global_opts(
            title_opts=opts.TitleOpts(
                title="{}年全国各省财政收入".format(year), subtitle="数据来源:全国各省财政收入.xlsx"
            ),
            tooltip_opts=opts.TooltipOpts(
                is_show=True, trigger="axis", axis_pointer_type="shadow"
            ),
            legend_opts=opts.LegendOpts(
                selected_map={
                    "财政收入": False,
                }
            ),
        )
相关推荐
lizi888887 小时前
足球大小球及亚盘数据分析与机器学习实战详解:从数据清洗到模型优化
java·人工智能·机器学习·数据挖掘·数据分析
~在杰难逃~7 小时前
关于订单信息的Excel数据分析报告
笔记·数据分析·excel·数据分析报告
python1567 小时前
Python Numpy布尔数组在数据分析中的应用
python·数据分析·numpy
安静的_显眼包O_o11 小时前
【数据分析】标准误差与标准差的区别
数据挖掘·数据分析
WebGIS皮卡茂13 小时前
【数据可视化】Arcgis api 4.x 专题图制作之分级色彩,采用自然间断法(使用simple-statistics JS数学统计库生成自然间断点)
javascript·arcgis·信息可视化·前端框架
惟长堤一痕14 小时前
医学数据分析实训 项目五 分类分析--乳腺癌数据分析与诊断
分类·数据挖掘·数据分析
Trouvaille ~15 小时前
【Python篇】NumPy完整指南(上篇):掌握数组、矩阵与高效计算的核心技巧
python·机器学习·数学建模·数据分析·numpy·科学计算·大数据处理
木凳子a16 小时前
怎么给儿童掏耳朵比较安全?安全儿童可视挖耳勺推荐
人工智能·安全·信息可视化·智能家居·健康医疗
William数据分析17 小时前
[Python数据可视化] Plotly:交互式数据可视化的强大工具
python·数据分析·数据可视化
惟长堤一痕21 小时前
医学数据分析实训 项目五 聚类分析--蛋白质消费结构分析--车辆驾驶行为指标
数据挖掘·数据分析