在使用pandas時,用to csv將50萬行資料寫入csv檔中效率很低,要50s,有更高效的方法嗎?

時間 2021-06-02 02:03:31

1樓:星空流

pandas 儲存資料除了to_csv方法,還有其他方法,比如topickle()方法,可以儲存原始的資料型別,相應的使用read_pickle方法進行讀取資料,速度非常快。

儲存資料前可以先把資料型別轉換成category型別,這樣會節省很多空間(硬碟空間及執行記憶體),寫入時間也會縮短,而且下次讀取的時候,內容及型別也不會發生變化。

星空流:Pandas讀取檔案的效率-CSV VS Pickle

2樓:

50W 行的csv,是20M的內容,大概是0.08秒把

我知道你是pandas的資料結構,你可以先轉python的list,然後拼接成字串,然後直接寫,io的時候,其實python原生的寫東西不是很慢。。。。。

3樓:張翼軫

可以看看下面這個帖子,從作者的實際操作來看,手寫CSV比用原生的可以快7倍。

當然,如果不是一定要生成CSV,的確是其他高階格式比如HDF更好,速度快,占用空間也小。

4樓:本圖希

先隨便用 numpy 生成乙個二位陣列 a = np.random.rand(500000, 50),檢視大小約200MB print( a.

_sizeof_()),執行時間236ms(記憶體裡當然快) 轉為乙個df df = pd.DataFrame(a)

test1: 直接用 df.to_csv('test1.csv'),儲存時間35.7秒,檔案大小474MB

test2: 用 df.to_pickle('test2.pkl'),儲存時間402ms,幾乎是瞬間完成,檔案大小 195MB

test3: 用 df.to_hdf('test3.h5', 'table'),用時1.72秒,檔案大小199MB

由於 pickle 方法儲存的是二進位制檔案,所以當然excel開啟就是亂碼. pickle檔案要用能處理二進位制的軟體開啟,或者直接在py裡操作

5樓:追遠·J

你的資料規模描述得太粗糙了……50萬行資料,那有多少列呢?假設是50列,型別全為雙精度,那麼就約有500000×50×8=節也就是200MB,我用個全零的試了下大概需要30s,儲存成的csv檔案有100MB。

個人覺得這個速度不慢了。

使用python中的pandas模組時,怎樣只對其中的浮點數求和,而忽略掉其中的字串呢?

黃寶臣 df a lambdax 0iftype x isstrelsex sum 先用if語句判斷是否是str型別,是的話轉成0就行了,最後運算。 本圖希 假設你的資料集,是某一列中存在混合型別的資料,那麼我們要做的就是把能夠進行浮點轉換的數挑出來的過程。將乙個 對應位置為True or Fals...

你在遊玩minecraft時,在不使用種子的情況下,遇到的最大的礦洞有多大?

月遇從雲 乙個天然礦洞進去,兩個廢棄礦井,中間隔了約300 400格的距離,而這兩個礦井的面積加起來還不到整個礦洞的三分之一!七個不連續的大型岩漿湖 絕對不是同一條中間斷開 統計下礦物吧,鑽石原礦 34個 金礦 六組 43個 鐵礦 18組 15個 青金石原礦 一組 24個 煤炭 紅石 因為揹包有限,...

萬用表在使用過程中和完畢時應注意什麼?

柳暗花明樓 了解本身的特性,1,通斷檔位的臨界電阻,有些表是10歐姆,有些是50歐姆,具體需要測試。2,電流檔位的內阻,微安檔位具體是多大,部分表是100歐姆,在部分場合不能忽略萬用表的壓降。3,位置電壓的測量可能需要借助示波器,比如乙個5v的1khz的脈衝電壓,直流檔測出來可能是2.5v。 想啥做...