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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

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

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

折線圖

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

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

我們將使用 Matplotlib 的 errorbar 函數對數據進行處理,以便使數據變成必要格式。

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

如果我們直接將 dataframe 傳入該函數中,而不考慮數據結構,那么可能會遇到上面的混亂情況。該函數將所有數據點都繪制成一個線條,將 dataframe 第一行的值與最后一行的值相連。為了按照預期方式創建折線圖,我們需要對數據進行額外的處理,以總結數據。

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

因為 x 變量 ('num_var1') 是連續的,我們首先設置數據分組采用的分箱。除了常見的邊緣之外,還會計算每個分箱的中心,以便稍后繪制出來。對于每個分箱中的數據點,我們都計算均值和均值的標準差。注意這里的 cut 函數調用和上一部分的不一樣,因為我們不需要計算每個點的權重。

上述數據摘要的一個有趣的方面是,隨著 x 值的增大,均值的不確定性也會增大。但是對于兩個最大的數據點,沒有誤差條。從默認的 errorbar 圖形(或下面的散點圖)可以看出,這是因為最后兩個分箱分別只有一個數據點。

其他版本

你還可以通過使用 pandas 的 rolling 方法以滾動窗口的形式計算摘要統計值,而不是通過固定分箱計算摘要統計值。因為滾動窗口將通過 dataframe 的序列行進行計算,我們應該使用 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')

注意,在繪制圖形時,我們可以繪制多條線。如果挨個地調用多個 Matplotlib 函數,所有函數都會在相同的坐標軸上繪制。我們將繪制三個中央四分位數,并放在散點圖上方,而不是繪制均值和誤差條。

為者常成,行者常至

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。