【Python學習】使用pandas和matplotlib分析1949-2016年中國各省市歷年GDP數據

【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
數據呈現如下形式:
在這裏插入圖片描述
準確來書,第一行是標題,第一列是年份,其他列是每個省份的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)

結果如下圖所示:
在這裏插入圖片描述

設置顏色列表

由於繪製的曲線有很多條,所以我們要提前指定顏色

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')

結果如下圖所示:
在這裏插入圖片描述

【作者簡介】陳藝榮,男,目前在華南理工大學電子與信息學院廣東省人體數據科學工程技術研究中心攻讀博士,擔任IEEE Access、IEEE Photonics Journal的審稿人。兩次獲得美國大學生數學建模競賽(MCM)一等獎,獲得2017年全國大學生數學建模競賽(廣東賽區)一等獎、2018年廣東省大學生電子設計競賽一等獎等科技競賽獎項,主持一項2017-2019年國家級大學生創新訓練項目獲得優秀結題,參與兩項廣東大學生科技創新培育專項資金、一項2018-2019年國家級大學生創新訓練項目獲得良好結題,發表SCI論文4篇,授權實用新型專利8項,受理髮明專利13項。
我的主頁
我的Github
我的CSDN博客
我的Linkedin

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章