第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

舍入數(shù)據(jù)框列后繪圖不起作用

舍入數(shù)據(jù)框列后繪圖不起作用

大話西游666 2021-08-14 16:35:04
我正在嘗試讀取空格分隔值,將 Savitzky-Golay 過濾器應(yīng)用于其中一列,將列四舍五入為 6 位十進(jìn)制數(shù)字,繪制圖形并將數(shù)據(jù)導(dǎo)出到新文件。這是我注釋掉使圖形窗口“無響應(yīng)”的行的工作代碼:import pandas as pdfrom datetime import datetimeimport numpy as npimport matplotlib.pyplot as pltfrom scipy.signal import savgol_filterdf = pd.read_csv('data.txt', delim_whitespace = True)plt.plot(df.index, df.rotram, '-', lw=4)#plt.plot(df.index, savgol_filter(df.rotram, 21, 3), 'r-', lw=2)# smooth the 'rotram' column using Savitzky-Golay filterdf.rotram = savgol_filter(df.rotram, 21, 3)# round to 6 decimal digits#df.rotram = df.rotram.map('{:.6f}'.format)         # <-- not responding when plotting#df["rotram"] = df["rotram"].map('{:,.6f}'.format)  # the same as above (not responding when plotting)# When plot is removed then above rounding works wellplt.plot(df.index, df.rotram, 'r-', lw=2)df.to_csv('filtered.txt', sep='\t')plt.show()print "End"示例數(shù)據(jù)如下所示:otklon       rotram      lakat           rotnad-6.240000    -3.317000   -34.445000      16.805000 -6.633000    -3.501000   -34.519000      17.192000 -5.099000    -2.742000   -34.456000      15.059000 -6.148000    -3.396000   -34.281000      17.277000 -4.797000    -3.032000   -34.851000      16.052000 -5.446000    -2.964000   -34.459000      15.677000 -6.341000    -3.490000   -34.934000      17.300000 -6.508000    -3.465000   -35.030000      16.722000 -6.513000    -3.505000   -35.018000      16.845000 -6.455000    -3.501000   -35.302000      16.896000...(more than 20000 lines)輸入文件中的分隔符是space + TAB + space.如果我取消注釋該行,df.rotram = df.rotram.map('{:.6f}'.format)則程序掛起(無響應(yīng))并顯示空?qǐng)D,盡管保存的數(shù)據(jù)是正確的。如果我然后刪除該行,plt.plot(df.index, df.rotram, 'r-', lw=2)則程序正常結(jié)束。盡管在四舍五入后將數(shù)據(jù)保存到文件中效果很好,但繪圖不會(huì):-/
查看完整描述

1 回答

?
GCT1015

TA貢獻(xiàn)1827條經(jīng)驗(yàn) 獲得超4個(gè)贊

如果要將列四舍五入到第 N 個(gè)小數(shù)位,請(qǐng)使用pd.Series.round或np.around:


df.rotram = df.rotram.round(decimals=6)

# Or,

# df.rotram = np.around(df.rotram, decimals=6)

但是,我仍然想知道為什么上面的代碼沒有按預(yù)期工作。


當(dāng)您調(diào)用 時(shí)map,您將數(shù)字列轉(zhuǎn)換為字符串。Pandas 會(huì)在不做任何假設(shè)的情況下繪制這些數(shù)據(jù)。對(duì)于您的示例數(shù)據(jù),該圖看起來很可怕:

http://img1.sycdn.imooc.com//6117805d00012c4f06380454.jpg

相反,后一種情況使用round

http://img1.sycdn.imooc.com//6117806a0001312106140447.jpg

這些圖完全不同(在前一種情況下,每個(gè)字符串按字典順序排序并在 y 軸上給出自己的刻度)。


查看完整回答
反對(duì) 回復(fù) 2021-08-14
  • 1 回答
  • 0 關(guān)注
  • 176 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)