一、前言
最近一直在學python資料科學的相關課程,主要看了《資料科學入門》這本動物書,但這本書是真的隻入個門,把資料科學相關的各方面知識介紹了一下,真的隻是介紹了一下,想要系統地學習還是得去看更細緻的教程和官方文檔。
不斷地找網上的demo跟着敲,差不多的時候決定自己實作一個簡單的案例。于是乎找到了一個很好的資料網站——國家資料。裡面的資料支援多種形式的下載下傳。
二、實作
這裡是下載下傳了中國近20年的總人口、男性人口、女性人口、城鎮人口、鄉村人口的資料。import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
plt.rcParams['font.sans-serif'] = ['SimHei'] # 用來正常顯示中文标簽
plt.rcParams['axes.unicode_minus'] = False # 用來正常顯示負号
# 名額
# 年末總人口(萬人)
# 男性人口(萬人)
# 女性人口(萬人)
# 城鎮人口(萬人)
# 鄉村人口(萬人)
# 打開并讀取csv檔案
file = open("population_20.csv", 'r')
# 讀取csv檔案到DataFrame
# 這裡若不添加參數encoding='gb18030' 會報錯'utf-8' codec can't decode byte 0xc4 in position 4: invalid continuation byte
# 即utf-8無法被解析
df = pd.read_csv("population_20.csv", encoding='gb18030')
# 設定DataFrame的行名
df.index = ['總人口', '男性人口', '女性人口', '城鎮人口', '鄉村人口']
# 輸出DataFrame
print(df)
# 擷取列名 即之後的橫坐标刻度 [::-1]是用來反轉的 因為我想要一個2000-2019的順序
xlist = list(df.columns[::-1])
# 年末總人口
# df.loc[]傳回的是一個series
# 這裡的末尾使用了[::-1] 即用來反轉series
total_population = df.loc['總人口'][::-1]
total_population.plot()
# 男性人口
man_population = df.loc['男性人口'][::-1]
man_population.plot()
# 女性人口
woman_population = df.loc['女性人口'][::-1]
woman_population.plot()
# 城鎮人口
city_population = df.loc['城鎮人口'][::-1]
city_population.plot()
# 鄉村人口
village_population = df.loc['鄉村人口'][::-1]
village_population.plot()
# 設定x軸
# 這裡卡住了我好久 後面多嘗試才發現x軸的刻度是從0開始的 還是要多動手敲才能發現啊
x_ticks = np.linspace(0, 20, 10)
plt.xticks(x_ticks, xlist)
# 設定y軸
y_ticks = np.arange(0, 150000, 10000)
plt.yticks(y_ticks)
# 設定圖例位置
plt.legend(loc='lower right')
# 設定标注
plt.annotate('機關:萬人', xy=(15.5, 40000))
plt.show()
結果:
三、總結
剛開始學習資料科學的時候,隻是不斷地在敲demo,或者做例題,敲了很多遍還是記不住matplotlib、numpy、pandas等待這些第三方庫。半途也想過先放下去學别的,但好在沒有放棄,每天都堅持看一點資料(但也不得不吐槽,現在中文環境的網際網路資訊污染有點嚴重,各種爬蟲産生的文章不斷重複出現)。我也慢慢地收藏了一些很好的教程:
如何高效入門資料科學?(王樹義老師的教程真很友好,菜鳥也完全可以跟着一步步實作一個個小demo)
莫煩PYTHON
易百教程
DataSense|DataScience
……
感謝!
剛開始學習的時候,很糾結是多做例題還是直接上手執行個體,但後來發現兩者是分不開的,不敲例題來熟悉文法,會不知道如何實作、實作什麼demo,不去自己從頭或者模仿構思一個demo的話,也沒辦法把文法知識串聯在一起。還是得多動手敲,再一個是多總結。
就比如這個執行個體吧,雖然很簡單,甚至說直接拿excel操作都更簡單。但是也串聯了I\O、matplotlib、numpy、pandas和其中series、dataframe雲雲一些細小的知識點。是以說,還是得不斷熟悉記憶文法并同時去做一些執行個體比較好。
https://www.jianshu.com/p/0ad147e40750