日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > python >内容正文

python

python根据时间序列画折线图_Python:matplotlib 和 Seaborn 之折线图 (三十七)

發(fā)布時(shí)間:2023/12/15 python 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python根据时间序列画折线图_Python:matplotlib 和 Seaborn 之折线图 (三十七) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

折線圖

折線圖是一種很常見(jiàn)的圖形,用于描繪一個(gè)數(shù)字變量相對(duì)于第二個(gè)變量的值的變化趨勢(shì)。在散點(diǎn)圖中,所有數(shù)據(jù)點(diǎn)都會(huì)繪制出來(lái),而在折線圖中,每個(gè)唯一 x 值或 x 值的分箱僅繪制一個(gè)點(diǎn)(就像直方圖一樣)。如果 x 分箱中有多個(gè)觀測(cè)值,那么該點(diǎn)在折線圖中繪制的 y 值將為該數(shù)據(jù)點(diǎn)在分箱中的摘要統(tǒng)計(jì)值(例如均值或中值)。繪制的點(diǎn)用線條連接起來(lái),表示 x 值的序列或相連特性。

如果 x 變量表示時(shí)間,則數(shù)據(jù)折線圖通常稱(chēng)之為時(shí)間序列圖形。通常,在每個(gè)時(shí)間段內(nèi),我們只有一個(gè)觀測(cè)值,例如股票圖表或匯率圖表。雖然 seaborn 函數(shù) tsplot 可以用于時(shí)間序列數(shù)據(jù),但是它很特殊(撰寫(xiě)本頁(yè)面時(shí)為 seaborn 0.8),計(jì)劃會(huì)出現(xiàn)很大的變化。

我們將使用 Matplotlib 的 errorbar 函數(shù)對(duì)數(shù)據(jù)進(jìn)行處理,以便使數(shù)據(jù)變成必要格式。

plt.errorbar(data = df, x = 'num_var1', y = 'num_var2')

如果我們直接將 dataframe 傳入該函數(shù)中,而不考慮數(shù)據(jù)結(jié)構(gòu),那么可能會(huì)遇到上面的混亂情況。該函數(shù)將所有數(shù)據(jù)點(diǎn)都繪制成一個(gè)線條,將 dataframe 第一行的值與最后一行的值相連。為了按照預(yù)期方式創(chuàng)建折線圖,我們需要對(duì)數(shù)據(jù)進(jìn)行額外的處理,以總結(jié)數(shù)據(jù)。

# set bin edges, compute centers

xbin_edges = np.arange(0.5, df['num_var1'].max()+0.25, 0.25)

xbin_centers = (xbin_edges + 0.25/2)[:-1]

# compute statistics in each bin

data_xbins = pd.cut(df['num_var1'], xbin_edges, right = False, include_lowest = True)

y_means = df['num_var2'].groupby(data_xbins).mean()

y_sems = df['num_var2'].groupby(data_xbins).sem()

# plot the summarized data

plt.errorbar(x = xbin_centers, y = y_means, yerr = y_sems)

因?yàn)?x 變量 ('num_var1') 是連續(xù)的,我們首先設(shè)置數(shù)據(jù)分組采用的分箱。除了常見(jiàn)的邊緣之外,還會(huì)計(jì)算每個(gè)分箱的中心,以便稍后繪制出來(lái)。對(duì)于每個(gè)分箱中的數(shù)據(jù)點(diǎn),我們都計(jì)算均值和均值的標(biāo)準(zhǔn)差。注意這里的 cut 函數(shù)調(diào)用和上一部分的不一樣,因?yàn)槲覀儾恍枰?jì)算每個(gè)點(diǎn)的權(quán)重。

上述數(shù)據(jù)摘要的一個(gè)有趣的方面是,隨著 x 值的增大,均值的不確定性也會(huì)增大。但是對(duì)于兩個(gè)最大的數(shù)據(jù)點(diǎn),沒(méi)有誤差條。從默認(rèn)的 errorbar 圖形(或下面的散點(diǎn)圖)可以看出,這是因?yàn)樽詈髢蓚€(gè)分箱分別只有一個(gè)數(shù)據(jù)點(diǎn)。

其他版本

你還可以通過(guò)使用 pandas 的 rolling 方法以滾動(dòng)窗口的形式計(jì)算摘要統(tǒng)計(jì)值,而不是通過(guò)固定分箱計(jì)算摘要統(tǒng)計(jì)值。因?yàn)闈L動(dòng)窗口將通過(guò) dataframe 的序列行進(jìn)行計(jì)算,我們應(yīng)該使用 sort_values 先使 x 值按升序排序。

# compute statistics in a rolling window

df_window = df.sort_values('num_var1').rolling(15)

x_winmean = df_window.mean()['num_var1']

y_median = df_window.median()['num_var2']

y_q1 = df_window.quantile(.25)['num_var2']

y_q3 = df_window.quantile(.75)['num_var2']

# plot the summarized data

base_color = sb.color_palette()[0]

line_color = sb.color_palette('dark')[0]

plt.scatter(data = df, x = 'num_var1', y = 'num_var2')

plt.errorbar(x = x_winmean, y = y_median, c = line_color)

plt.errorbar(x = x_winmean, y = y_q1, c = line_color, linestyle = '--')

plt.errorbar(x = x_winmean, y = y_q3, c = line_color, linestyle = '--')

plt.savefig('L4_C13_Lineplot3.png')

注意,在繪制圖形時(shí),我們可以繪制多條線。如果挨個(gè)地調(diào)用多個(gè) Matplotlib 函數(shù),所有函數(shù)都會(huì)在相同的坐標(biāo)軸上繪制。我們將繪制三個(gè)中央四分位數(shù),并放在散點(diǎn)圖上方,而不是繪制均值和誤差條。

為者常成,行者常至

總結(jié)

以上是生活随笔為你收集整理的python根据时间序列画折线图_Python:matplotlib 和 Seaborn 之折线图 (三十七)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。