在某些時(shí)候,,如果你嘗試使用Excel打開大型csv文件或文本文件,可能無(wú)法打開它們,。曾經(jīng)收到一個(gè)8GB的大型csv文件,想看一下內(nèi)容,,但無(wú)法使用任何嘗試過(guò)的程序打開它,,比如記事本,、Excel等。文件太大,,程序甚至無(wú)法啟動(dòng),。 要求相對(duì)簡(jiǎn)單:打開一個(gè)8GB的大型csv文件,查看前幾千行中的數(shù)據(jù),。如果當(dāng)你選擇了正確的工具——Python,,那么這項(xiàng)看似不可能的任務(wù)很容易完成。 下面將首先探討如何檢查大型csv文件的內(nèi)容,,然后我們將大文件分解成小文件,,這樣數(shù)據(jù)就可以在Excel中使用。 出于演示目的,,我們不會(huì)使用8GB的大型csv文件,;相反,假設(shè)使用一個(gè)只有2600行數(shù)據(jù)的較小文件,。 同以前一樣,,從導(dǎo)入必需的庫(kù)開始,在本練習(xí)中,,我們只需要pandas,。 import pandas as pd df = pd.read_csv('large_data.csv’) df_small = pd.read_csv('large_data.csv’, nrows = 1000) pd.read_csv()允許將任何.csv文件讀入Python,而不考慮文件大小——稍后將詳細(xì)介紹這一點(diǎn),。csv文件是逗號(hào)分隔值的文件,,基本上是文本文件。此方法有一個(gè)可選參數(shù)nrows,,用于指定要加載的行數(shù),。 第一個(gè)變量df加載了csv文件中的所有內(nèi)容,而第二個(gè)變量df_small只加載前1000行數(shù)據(jù),。我們可以通過(guò)調(diào)用.shape屬性來(lái)檢查這一點(diǎn),。 圖1:兩個(gè)數(shù)據(jù)框架的大小(行數(shù),,列數(shù)) 如上所示,,“l(fā)arge_data.csv”文件總共包含2599行22列數(shù)據(jù)。還可以確認(rèn),,在df_small變量中,,只加載了前1000行22列數(shù)據(jù)。 鍵入df_small.head()顯示df_small數(shù)據(jù)框架中的前5行數(shù)據(jù),。我們可以通過(guò)這種方式查看大文件,! 圖2 接下來(lái),如果我們想只使用Excel打開數(shù)據(jù)文件,,該怎么辦,? 雖然我們不能使用魔法讓Excel打開這個(gè)8GB的文件,,但我們可以通過(guò)將它分解成更小的文件來(lái)“分而治之”。例如,,8個(gè)文件,,每個(gè)1GB;或16個(gè)文件,,每個(gè)500MB?,F(xiàn)代版本的Excel可以輕松處理這些文件大小。 這一次,,我們將以稍微不同的方式加載數(shù)據(jù)框架——使用可選參數(shù)chunksize,。同樣,出于演示目的,,我們使用了一個(gè)小得多的文件,。 df = pd.read_csv('large_data.csv’, chunksize = 900) 在不涉及太多技術(shù)細(xì)節(jié)的情況下,chunksize參數(shù)允許我們以塊的形式加載數(shù)據(jù),,在我們的示例中,,每個(gè)塊的大小為900行數(shù)據(jù)。塊的數(shù)量由程序自動(dòng)確定,。鑒于我們的csv文件包含2600行,,我們希望看到2600/900=2.9,這意味著總共有3個(gè)塊,。前兩個(gè)區(qū)塊包含900行,,最后一個(gè)區(qū)塊包含剩余的799行。 圖3 我們已經(jīng)成功地加載了一個(gè)文件并將其分解為更小的部分,,接下來(lái)讓我們將它們保存到更小的單個(gè)文件中,。 i = 1 for file in df: file.to_csv(f’file_{i}.csv’) i += 1 圖4 小結(jié) 上文代碼合起來(lái): import pandas as pd df = pd.read_csv('large_data.csv’) df_small = pd.read_csv('large_data.csv’, nrows = 1000) i = 1 for file in df: print(file.shape) file.to_csv(f’file_{i}.csv’) i += 1 我們只使用了8行代碼來(lái)解決在Excel中似乎無(wú)法實(shí)現(xiàn)的問(wèn)題,怎么樣,,對(duì)Python有感覺(jué)了嗎,? |
|
來(lái)自: hercules028 > 《Python and AI》