欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Python用pandas和matplotlib分析1949-2016年中国各省市历年GDP数据

程序员文章站 2023-11-26 09:23:22
【Python学习】使用pandas和matplotlib分析1949-2016年中国各省市历年GDP数据导入包读取数据设置颜色列表绘图分析导入包由于我是在jupyter notebook进行代码编写的,仅此需要增加语句%matplotlib inlineimport numpy as npimport pandas as pdimport matplotlib.pyplot as plt%matplotlib inline同时,需要设置显示中文,我使用的是macbook,因此需要增加以下语...

【Python学习】使用pandas和matplotlib分析1949-2016年中国各省市历年GDP数据

导入包

由于我是在jupyter notebook进行代码编写的,仅此需要增加语句%matplotlib inline

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline

同时,需要设置显示中文,我使用的是macbook,因此需要增加以下语句:

plt.rcParams["font.family"] = 'Arial Unicode MS'

如果是使用windows系统,则需要改为windows的相应字体。

读取数据

参考文件:1949-2016年中国各省市历年GDP数据汇总表.xlsx
数据呈现如下形式:
Python用pandas和matplotlib分析1949-2016年中国各省市历年GDP数据
准确来说,第一行是标题,第一列是年份,其他列是每个省份的GDP数据,在这里使用pandas进行读取。需要注意的是,数据文件1949-2016年中国各省市历年GDP数据汇总表.xlsx和代码文件保存在相同的路径,否则,你需要修改datapath制定数据路径。

# 第一步:数据读取
## 更加具体地来说,如何把xlsx文件读取进来,如果不知道怎么读取,可以百度搜索“pandas读取xlsx文件”
## pandas是python的数据文件读取库
import pandas as pd
datapath = "./1949-2016年中国各省市历年GDP数据汇总表.xlsx" # ./ 表示当前路径
df = pd.read_excel(datapath)
print(df)

使用以下代码熟悉pandas操作,以及读取进来的数据:

print(type(df)) # 输出df的数据类型
print(df.columns.values) # 输出列标题
print(df.index.values) # 输出行索引
data = df.iloc[:, 0].values # 输出第1列数据
print('年份数据: \n', data)

结果如下图所示:
Python用pandas和matplotlib分析1949-2016年中国各省市历年GDP数据

设置颜色列表

由于绘制的曲线有很多条,所以我们要提前指定颜色

cnames = [
'#AAF80F',
'#7AE7D7',
'#00F11F',
'#7FFFD4',
'#F0FF00',
'#F5F5DC',
'#FFE4C4',
'#000000',
'#FFEBCD',
'#0000FF',
'#8A2BE2',
'#A52A2A',
'#DEB887',
'#5F9EA0',
'#7FFF00',
'#D2691E',
'#FF7F50',
'#6495ED',
'#FFF8DC',
'#DC143C',
'#00FFFF',
'#00008B',
'#8B008B',
'#556B2F',
'#FF8C00',
'#9932CC',
'#8B0000',
'#E9967A',
'#8FBC8F',
'#DCDCDC',
'#F8F8FF',
'#FFD700',
'#DAA520',
'#808080',
'#008000',
'#ADFF2F',
'#F0FFF0',
'#FF69B4',
'#CD5C5C',
'#4B0082',
'#FFFFF0',
'#F0E68C',
    ]

绘图分析

这里用到了一个for循环,避免多次书写画图函数,从而可以降低工作量,另外,需要对’——'进行处理,处理方法为:GDP =[0 if x == '——' else x for x in GDP],也就是令它们取值为0。

# 绘图
fig = plt.figure(figsize=(16, 10))  # figsize设置图像大小
year = df.iloc[:, 0].values

for i in range(len(df.columns.values)-1):
    temp = i+1 # 因为第1列为年份
    GDP = df.iloc[:, temp].values
    GDP =[0 if x == '——' else x for x in GDP]
    #print(df.columns.values[temp],GDP)
    plt.plot(year, GDP,color=cnames[temp], label=str(df.columns.values[temp]))

plt.legend(loc='upper left') # 显示图例
plt.xlabel('year')
plt.ylabel('GDP')

结果如下图所示:
Python用pandas和matplotlib分析1949-2016年中国各省市历年GDP数据

【作者简介】陈艺荣,男,目前在华南理工大学电子与信息学院广东省人体数据科学工程技术研究中心攻读博士,担任IEEE Access、IEEE Photonics Journal的审稿人。两次获得美国大学生数学建模竞赛(MCM)一等奖,获得2017年全国大学生数学建模竞赛(广东赛区)一等奖、2018年广东省大学生电子设计竞赛一等奖等科技竞赛奖项,主持一项2017-2019年*大学生创新训练项目获得优秀结题,参与两项广东大学生科技创新培育专项资金、一项2018-2019年*大学生创新训练项目获得良好结题,发表SCI论文4篇,授权实用新型专利8项,受理发明专利13项。
我的主页
我的Github
我的CSDN博客
我的Linkedin

本文地址:https://blog.csdn.net/m0_37201243/article/details/107107861