0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

pandas讀取csv文件有什么方法和注意點(diǎn)?

8nfr_ZTEdevelop ? 來源:未知 ? 作者:易水寒 ? 2018-07-21 10:00 ? 次閱讀

這篇文章介紹了利用數(shù)據(jù)分析工具pandas讀取csv文件的方法和注意點(diǎn),便于迅速過渡到數(shù)據(jù)處理階段。

pandas是一個(gè)高效的數(shù)據(jù)分析工具。基于其高度抽象的數(shù)據(jù)結(jié)構(gòu)DataFrame,幾乎可以對(duì)數(shù)據(jù)進(jìn)行任何你想要的操作。

由于現(xiàn)實(shí)世界中數(shù)據(jù)源的格式非常多,pandas也支持了不同數(shù)據(jù)格式的導(dǎo)入方法,本文介紹pandas如何從csv文件中導(dǎo)入數(shù)據(jù)。

從上圖可以看出,我們要做的工作就是把存儲(chǔ)在csv格式中的數(shù)據(jù)讀入并轉(zhuǎn)換成DataFrame格式。pandas提供了一個(gè)非常簡單的api函數(shù)來實(shí)現(xiàn)這個(gè)功能:read_csv()。

1. 通過read_csv接口讀入csv文件中的數(shù)據(jù)

下面是一個(gè)簡單的示例:

import pandas as pd

CSV_FILE_PATH ='./test.csv'

df = pd.read_csv(CSV_FILE_PATH)

print(df.head(5))

只要簡單地指定csv文件的路徑,便可以得到DataFrame格式的數(shù)據(jù)df。對(duì)于理想情況下的數(shù)據(jù),導(dǎo)入過程就是這么簡單!

下面考慮這種情況:假設(shè)csv文件頭部有幾個(gè)無效行,那么打印出來的結(jié)果可能如下所示:

1 2 3 4

0 datetime host hit volume

12018-07-2409:00:00 weibo.com 20 1020

22018-07-2509:00:00 qq.com no20 1028

32018-07-2619:00:00 sina.com 25 1181

42018-07-2721:00:00 sohu.com 15 4582

pandas把【1,2,3,4】這組無效數(shù)據(jù)當(dāng)作了column name;而實(shí)際上,我們更偏向于將【datetime,host,hit,volume】這組數(shù)據(jù)當(dāng)作column name。對(duì)于這種情況,read_csv()函數(shù)提供了一個(gè)參數(shù):skiprows,用于指定跳過csv文件的頭部的前幾行。在這里,我們跳過1行即可。

import pandas as pd

CSV_FILE_PATH ='./test.csv'

df = pd.read_csv(CSV_FILE_PATH, skiprows=1)

print(df.head(5))

得到的結(jié)果如下所示:

datetime host hit volume

02018-07-2409:00:00 weibo.com 20 1020

12018-07-2509:00:00 qq.com no20 1028

22018-07-2619:00:00 sina.com 25 1181

32018-07-2721:00:00 sohu.com 15 4582

2. 處理csv文件中的無效數(shù)據(jù)

pandas可以自動(dòng)推斷每個(gè)column的數(shù)據(jù)類型,以方便后續(xù)對(duì)數(shù)據(jù)的處理。還以上文中的數(shù)據(jù)為例,通過如下代碼:

import pandas as pd

CSV_FILE_PATH ='./test.csv'

df = pd.read_csv(CSV_FILE_PATH)

print(df.head(5))

print('datatype of column hit is: '+ str(df['hit'].dtypes))

得出的結(jié)果:

datetime host hit volume

02018-07-2409:00:00 weibo.com 20 1020

12018-07-2509:00:00 qq.com 20 1028

22018-07-2619:00:00 sina.com 25 1181

32018-07-2721:00:00 sohu.com 15 4582

datatype of column hit is: int64

pandas將hit這一列的數(shù)據(jù)類型判定為了int64,這顯然方便未來我們對(duì)于該列數(shù)據(jù)的運(yùn)算。但是在實(shí)際情況中,我們經(jīng)常會(huì)面臨數(shù)據(jù)缺失的問題,如果出現(xiàn)這種情況,我們往往會(huì)用一些占位符來表達(dá)。假設(shè),我們用missing這個(gè)占位符來表示數(shù)據(jù)缺失,仍使用上述代碼,來探索下會(huì)發(fā)生些什么:

datetime host hit volume

02018-07-2409:00:00 weibo.com 20 1020

12018-07-2509:00:00 qq.com 20 1028

22018-07-2619:00:00 sina.com missing missing

32018-07-2721:00:00 sohu.com 15 4582

datatype of column hit is:object

由于hit這一列中出現(xiàn)了missing這個(gè)字符串,pandas將hit這一列的數(shù)據(jù)類型判斷成了object。這會(huì)給我們對(duì)該列數(shù)據(jù)的運(yùn)算帶來影響。例如,假設(shè)我們要計(jì)算hit列前兩行數(shù)據(jù)的和,代碼如下:

print(df['hit'][0]+ df['hit'][1])

結(jié)果是:

2020

本來我們想要的是數(shù)學(xué)運(yùn)算結(jié)果,但得到的卻是一個(gè)字符串拼接結(jié)果。這就是由于數(shù)據(jù)類型判斷失誤帶來的嚴(yán)重影響。對(duì)于這種情況,read_csv()函數(shù)也提供了一個(gè)簡單的處理方式,只需要通過na_value參數(shù)指定占位符,pandas便會(huì)在讀入數(shù)據(jù)的過程中自動(dòng)將這些占位符轉(zhuǎn)換成NaN,從而不影響pandas對(duì)column數(shù)據(jù)類型的正確判斷。示例代碼:

import pandas as pd

CSV_FILE_PATH ='./test.csv'

df = pd.read_csv(CSV_FILE_PATH, skiprows=0, na_values=['missing')

print(df.head(5))

print('datatype of column hit is: '+ str(df['hit'].dtypes))

print(df['hit'][0]+ df['hit'][1])

運(yùn)行結(jié)果如下:

datetime host hit volume

02018-07-2409:00:00 weibo.com 20.01020.0

12018-07-2509:00:00 qq.com 20.01028.0

22018-07-2619:00:00 sina.com NaN NaN

32018-07-2721:00:00 sohu.com 15.04582.0

datatype of column hit is: float64

40.0

可以看到,pandas將數(shù)據(jù)集中的missing單元全部轉(zhuǎn)換為了NaN,并成功判斷出hit這一列的數(shù)據(jù)類型。

3. 總結(jié)

通過一個(gè)簡單的read_csv()函數(shù),實(shí)際可以做到如下幾件事:

通過指定的文件路徑,從本地讀取csv文件,并將數(shù)據(jù)轉(zhuǎn)換成DataFrame格式

更正數(shù)據(jù)集的頭部(column)

正確處理缺失數(shù)據(jù)

推斷每一列的數(shù)據(jù)類型

當(dāng)然,read_csv()函數(shù)還有一系列其他參數(shù)來應(yīng)對(duì)各種情況,遇到具體問題的同學(xué)可參考其接口指南。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 數(shù)據(jù)處理
    +關(guān)注

    關(guān)注

    0

    文章

    607

    瀏覽量

    28597
  • 數(shù)據(jù)分析
    +關(guān)注

    關(guān)注

    2

    文章

    1453

    瀏覽量

    34090
  • csv
    csv
    +關(guān)注

    關(guān)注

    0

    文章

    39

    瀏覽量

    5832

原文標(biāo)題:干貨 | pandas讀取csv文件數(shù)據(jù)的方法及注意點(diǎn)

文章出處:【微信號(hào):ZTEdeveloper,微信公眾號(hào):中興開發(fā)者社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    c語言讀寫表格(csv)文件 讀取csv文件示例

    逗號(hào)分隔值(Comma-Separated Values,CSV,有時(shí)也稱為字符分隔值,因?yàn)榉指糇址部梢圆皇嵌禾?hào)),其文件以純文本形式存儲(chǔ)表格數(shù)據(jù)(數(shù)字和文本)。純文本意味著該文件是一個(gè)字符序列
    的頭像 發(fā)表于 06-08 09:22 ?6651次閱讀
    c語言讀寫表格(<b class='flag-5'>csv</b>)<b class='flag-5'>文件</b>  <b class='flag-5'>讀取</b><b class='flag-5'>csv</b><b class='flag-5'>文件</b>示例

    Python利用pandas讀寫Excel文件

    使用pandas模塊讀取Excel文件可以更為方便和快捷。pandas可以將Excel文件讀取
    的頭像 發(fā)表于 12-16 11:22 ?1381次閱讀
    Python利用<b class='flag-5'>pandas</b>讀寫Excel<b class='flag-5'>文件</b>

    labview如何讀取以制表符分割的csv文件

    把txt文件后綴名改為csv就得到以制表符分割的csv文件,讀取之后需要對(duì)數(shù)據(jù)進(jìn)行一些處理 刪除和加入一些數(shù)據(jù)之后另存為txt
    發(fā)表于 04-01 10:51

    LabVIEW讀取.CSV文件

    .CSV文件其實(shí)也是一種文本文件,跟.xsl文件的區(qū)別在于分割符不同,.CSV以逗號(hào)(英文)分割,.xsl以tab分割,使用
    發(fā)表于 04-07 17:52

    labview讀取動(dòng)態(tài).csv文件時(shí)是隔一段時(shí)間讀取相對(duì)應(yīng)的數(shù)據(jù)

    要求:在讀取動(dòng)態(tài).csv文件時(shí)是隔一段時(shí)間讀取舉個(gè)例子說明,如圖:1.第1次讀取csv時(shí),數(shù)據(jù)從
    發(fā)表于 06-10 11:19

    csv格式文件讀取問題?

    本帖最后由 金大大 于 2016-11-14 19:48 編輯 現(xiàn)有一個(gè)4萬行數(shù)字的csv格式的文件,使用讀取電子表格文件控件讀取,但
    發(fā)表于 11-12 23:42

    寫入.csv文件的問題

    嗨Vee用戶,我一個(gè)Vee測試,我從.csv文件讀取了許多參數(shù),執(zhí)行測試循環(huán),并在每個(gè)循環(huán)結(jié)束時(shí)將結(jié)果存儲(chǔ)在another.csv
    發(fā)表于 10-09 14:55

    成功解決pandas無法讀取中文文件的問題

    成功解決pandas無法讀取中文文件的問題
    發(fā)表于 12-21 10:30

    labview如何自動(dòng)讀取文件夾中的若干個(gè)數(shù)據(jù)(csv文件

    剛學(xué)習(xí)labview,希望了解labview如何自動(dòng)讀取一個(gè)文件夾中的若干個(gè)csv文件,即完成檢測cs
    發(fā)表于 10-16 18:10

    TensorFlow csv文件讀取數(shù)據(jù)(代碼實(shí)現(xiàn))詳解

    大多數(shù)人了解 Pandas 及其在處理大數(shù)據(jù)文件方面的實(shí)用性。TensorFlow 提供了讀取這種文件方法。前面章節(jié)中,介紹了如何在 Te
    發(fā)表于 07-28 14:40

    如何通過pandas讀取csv文件指定的前幾行?

    今天小編給大家分享一篇Python技術(shù)開發(fā)方面的文章,如何實(shí)現(xiàn)pandas讀取csv文件指定的前幾行,喜歡Python開發(fā)的小伙伴下面就隨小編一起來了解一下吧。
    發(fā)表于 09-19 17:43 ?16次下載

    讀取公盤文件方法

    讀取公盤文件方法
    發(fā)表于 11-07 11:27 ?0次下載

    介紹Python中常用的文件讀取方法以及應(yīng)用示例

    ython 文件讀取是 Python 語言中的基本操作之一。在編寫Python 程序時(shí),我們經(jīng)常需要讀取不同的文件,例如文本文件、
    的頭像 發(fā)表于 04-27 09:16 ?1082次閱讀

    如何使用Python和pandas讀取、寫入文件

    在本文中,我將介紹如何使用 Python 和 pandas讀取、寫入文件。 1、安裝 pip install pandas 2、讀取 i
    的頭像 發(fā)表于 09-11 17:52 ?1223次閱讀

    Python教你用 Rows 快速操作csv文件

    Rows 是一個(gè)專門用于操作表格的第三方Python模塊。 只要通過 Rows 讀取 csv 文件,她就能生成可以被計(jì)算的 Python 對(duì)象。 相比于 pandas 的 pd.rea
    的頭像 發(fā)表于 10-21 10:18 ?636次閱讀