[Python與數(shù)據(jù)分析]-7Python畫時序各種圖

1時序圖

# -*- coding: utf-8 -*-
from pandas import Series
import matplotlib.pyplot as plt
data = Series.from_csv('minimum.csv',header=0)
data.astype(float)
print(data.head())
data.plot(style='r.')
plt.show()
#畫其中一年圖
data = Series.from_csv('minimum.csv', header=0)
one_year = data['1990']
one_year.plot()

??這個解決的一個問題是object類型是不能plot的,查看
pandas 讀csv文件 TypeError: Empty 'DataFrame': no numeric data to plot
??另外plot的style可以查看文檔自己選擇喜歡的企孩,查看
plot類型

2直方圖和密度圖

??直方圖僻焚,沒有時序肚邢,只是在一個時間范圍的變量范圍統(tǒng)計诈铛,比方說這些數(shù)據(jù)分成10個bins篡九,我們會看到每個bin的數(shù)量(比方說多少天谐岁,月等等),這種統(tǒng)計方法同密度圖是一樣的榛臼,能看到變量在哪些取值范圍比較多伊佃,哪些比較少等等,觀測到數(shù)據(jù)的潛在分布規(guī)律沛善。

from pandas import Series
import matplotlib.pyplot as plt
data = Series.from_csv('minimum.csv', header=0)
data.hist()
plt.show()
data.plot(kind='kde')
plt.show()

??這里面主要有一個問題航揉,就是什么是kde:Kernel Density Estimation,sklearn的tutorial會告訴你金刁,請看文檔

3箱線圖

from pandas import *
import matplotlib.pyplot as plt
data = Series.from_csv('minimum.csv', header=0)
groups = data.groupby(TimeGrouper('A'))
years = DataFrame()
for name,group in groups:
    years[name.year]=group.values
years.boxplot()
plt.show()

圖片.png

??箱形圖帅涂,它能顯示出一組數(shù)據(jù)的最大值、最小值尤蛮、中位數(shù)媳友、及上下四分位數(shù),其中最主要的是最大值最小值給的是在上下四分位數(shù)的某個區(qū)間里面产捞,形成一個盒子加上胡須(因此也叫盒須圖)醇锚,例如上圖1981年,最大值是20-25之間坯临,最小值在0-5之間焊唬,務(wù)必記住是在一個大概率區(qū)間里面最大最小,不是實際的最大最小看靠,離開了這個區(qū)間會有很多小圓圈和表示赶促,圓圈表示離群值,表示極端值挟炬。
??也可以取出其中一年分析:

from pandas import *
import matplotlib.pyplot as plt
data = Series.from_csv('minimum.csv', header=0)
data = data['1990']
groups = data.groupby(TimeGrouper('M'))
months = concat([DataFrame(x[1].values) for x in groups], axis=1)
months = DataFrame(months)
months.columns = range(1,13)
months.boxplot()
plt.show()

4熱力圖

??熱力圖就更加形象鸥滨,雖然我們不知道數(shù)值嗦哆,但是通過顏色我們能看看極值的分布,顏色越鮮艷爵赵,數(shù)值越大(紅黃)吝秕,顏色越暗淡,數(shù)值越锌栈谩(藍(lán)綠),當(dāng)然顯示也有可能不一樣烁峭。

#1988年的例子
from pandas import *
import matplotlib.pyplot as plt
data = Series.from_csv('minimum.csv', header=0)
data = data['1988']
groups = data.groupby(TimeGrouper('M'))
months = concat([DataFrame(x[1].values) for x in groups], axis=1)
months = DataFrame(months)
months.columns = range(1,13)
plt.matshow(months,interpolation=None,aspect='auto')
plt.show()

5滯后圖和散點(diǎn)圖

??這里應(yīng)該注意一下,滯后圖與散點(diǎn)圖可以按照時序畫秕铛,那就是(1)里面的線形圖了约郁,這里講的其實不是時序的,而是分析數(shù)據(jù)相關(guān)性的但两,我們給數(shù)據(jù)一段時間的觀測間隔鬓梅,因為假定前面的數(shù)據(jù)和后面的數(shù)據(jù)有關(guān)系,是正相關(guān)或是負(fù)相關(guān)還是什么谨湘,選定一個間隔绽快,plot一下。

from pandas import *
import matplotlib.pyplot as plt
from pandas.plotting import lag_plot
data = Series.from_csv('minimum.csv', header=0)
lag_plot(data)
plt.show()
圖片.png

??明顯我們看到了正相關(guān)紧阔。下面給出一個星期的散點(diǎn)圖坊罢,我們可以看到間隔一天、兩天擅耽、三天......

from pandas import *
import matplotlib.pyplot as plt
data = Series.from_csv('minimum.csv', header=0)
values = DataFrame(data.values)
lags = 7
columns = [values]
for i in range(1,(lags + 1)):
    columns.append(values.shift(i))
dataframe = concat(columns, axis=1)
columns = ['t']
for i in range(1,(lags + 1)):
    columns.append('t-' + str(i))
dataframe.columns = columns
plt.figure(1)
for i in range(1,(lags + 1)):
    ax = plt.subplot(240 + i)
    ax.set_title('t vs t-' + str(i))
    plt.scatter(x=dataframe['t'].values, y=dataframe['t-'+str(i)].values)
plt.show()
圖片.png

6自相關(guān)圖

??自相關(guān)圖其實就是考慮數(shù)據(jù)和一定間隔數(shù)據(jù)的相關(guān)性活孩,越接近1是正相關(guān),接近-1是負(fù)相關(guān)乖仇,接近0就是相關(guān)性很低憾儒。下面就是計算公式(右邊是左邊的特殊情形,也就是自相關(guān)圖的公式乃沙,因為是自己和自己所有可能的間隔產(chǎn)生的)起趾,下面代碼給的自相關(guān)默認(rèn)是數(shù)據(jù)和滯后1步的相關(guān)性。


圖片.png

圖片.png
from pandas import Series
import matplotlib.pyplot as plt
from pandas.plotting import autocorrelation_plot
series = Series.from_csv('minimum.csv', header=0)
autocorrelation_plot(series)
plt.show()

7時序圖(加label)

圖片.png
import  pandas  as pd
import  matplotlib.pyplot as plt
?
plt.rcParams['font.sans-serif'] = ['SimHei']  # 用來正常顯示中文標(biāo)簽
plt.rcParams['axes.unicode_minus'] = False  # 用來正常顯示負(fù)號
?
df = pd.read_excel('quanguojingji10nian.xls')
x=df['指標(biāo)']
y1=df['國民總收入(億元)']
plt.plot(x,y1,label='國民總收入')
?
plt.xlabel('年份')
plt.ylabel('億元')
plt.title('國內(nèi)生產(chǎn)總值')
plt.legend()
plt.show()
圖片.png

8直方圖(帶label)

import  pandas  as pd
import  matplotlib.pyplot as plt
?
plt.rcParams['font.sans-serif'] = ['SimHei']  # 用來正常顯示中文標(biāo)簽
plt.rcParams['axes.unicode_minus'] = False  # 用來正常顯示負(fù)號
df = pd.read_excel('quanguojingji10nian.xls')
x=df['指標(biāo)']
y1=df['國民總收入(億元)']
?
plt.bar(x, y1, label='國民總收入')
plt.xlabel('年份')
plt.ylabel('億元')
plt.legend()
plt.show()
圖片.png

9餅圖(帶label)

import  pandas  as pd
import  matplotlib.pyplot as plt
?
plt.rcParams['font.sans-serif'] = ['SimHei']  # 用來正常顯示中文標(biāo)簽
plt.rcParams['axes.unicode_minus'] = False  # 用來正常顯示負(fù)號
df = pd.read_excel('quanguojingji10nian.xls')
?
labels='2018年','2017年','2016年','2015年','2014年','2013年','2012年','2011年','2010年','2009年'
x=df['國民總收入(億元)']
explode=(0.1,0,0,0,0,0,0,0,0,0)
plt.pie(x,labels=labels,explode=explode,startangle=60,autopct='%1.1f%%')
plt.axis("equal")
plt.title('國民總收入')
plt.show()
圖片.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末警儒,一起剝皮案震驚了整個濱河市阳掐,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌冷蚂,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,599評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件汛闸,死亡現(xiàn)場離奇詭異蝙茶,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)诸老,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,629評論 3 385
  • 文/潘曉璐 我一進(jìn)店門隆夯,熙熙樓的掌柜王于貴愁眉苦臉地迎上來钳恕,“玉大人,你說我怎么就攤上這事蹄衷∮嵌睿” “怎么了?”我有些...
    開封第一講書人閱讀 158,084評論 0 348
  • 文/不壞的土叔 我叫張陵愧口,是天一觀的道長睦番。 經(jīng)常有香客問我,道長耍属,這世上最難降的妖魔是什么托嚣? 我笑而不...
    開封第一講書人閱讀 56,708評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮厚骗,結(jié)果婚禮上示启,老公的妹妹穿的比我還像新娘。我一直安慰自己领舰,他們只是感情好夫嗓,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,813評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著冲秽,像睡著了一般舍咖。 火紅的嫁衣襯著肌膚如雪麻削。 梳的紋絲不亂的頭發(fā)上姻灶,一...
    開封第一講書人閱讀 50,021評論 1 291
  • 那天,我揣著相機(jī)與錄音算行,去河邊找鬼刨仑。 笑死郑诺,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的杉武。 我是一名探鬼主播辙诞,決...
    沈念sama閱讀 39,120評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼轻抱!你這毒婦竟也來了飞涂?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,866評論 0 268
  • 序言:老撾萬榮一對情侶失蹤祈搜,失蹤者是張志新(化名)和其女友劉穎较店,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體容燕,經(jīng)...
    沈念sama閱讀 44,308評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡梁呈,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,633評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了蘸秘。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片官卡。...
    茶點(diǎn)故事閱讀 38,768評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡蝗茁,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出寻咒,到底是詐尸還是另有隱情哮翘,我是刑警寧澤,帶...
    沈念sama閱讀 34,461評論 4 333
  • 正文 年R本政府宣布毛秘,位于F島的核電站饭寺,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏熔脂。R本人自食惡果不足惜佩研,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,094評論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望霞揉。 院中可真熱鬧旬薯,春花似錦、人聲如沸适秩。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,850評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽秽荞。三九已至骤公,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間扬跋,已是汗流浹背阶捆。 一陣腳步聲響...
    開封第一講書人閱讀 32,082評論 1 267
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留钦听,地道東北人洒试。 一個月前我還...
    沈念sama閱讀 46,571評論 2 362
  • 正文 我出身青樓,卻偏偏與公主長得像朴上,于是被迫代替她去往敵國和親垒棋。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,666評論 2 350