最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用Python pandas讀取CSV文件應(yīng)該注意什么?

 更新時間:2021年06月16日 09:33:44   作者:郝偉博士  
本文是給使用pandas的新手而寫,主要列出一些常見的問題,根據(jù)筆者所踩過的坑,進行歸納總結(jié),希望對讀者有所幫助,需要的朋友可以參考下

示例文件

將以下內(nèi)容保存為文件 people.csv

id,姓名,性別,出生日期,出生地,職業(yè),愛好
1,張小三,m,1992-10-03,北京,工程師,足球
2,李云義,m,1995-02-12,上海,程序員,讀書 下棋
3,周娟,女,1998-03-25,合肥,護士,音樂,跑步
4,趙盈盈,Female,2001-6-32,,學(xué)生,畫畫
5,鄭強強,男,1991-03-05,南京(nanjing),律師,歷史-政治

如果一切正常的話,在Jupyter Notebook 中應(yīng)該顯示以下內(nèi)容:

在這里插入圖片描述

文件編碼

文件編碼格式是最容易出錯的問題之一。如果編碼格式不正確,就會完全讀取不出文件內(nèi)容,出現(xiàn)類似于以下的錯誤, 讓人完全不知所措:

---------------------------------------------------------------------------
UnicodeDecodeError                        Traceback (most recent call last)
<ipython-input-6-8659adefcfa6> in <module>
----> 1 pd.read_csv('people.csv', encoding='gb2312')

C:\ProgramData\Anaconda3\lib\site-packages\pandas\io\parsers.py in parser_f(filepath_or_buffer, sep, delimiter, header, names, index_col, usecols, squeeze, prefix, mangle_dupe_cols, dtype, engine, converters, true_values, false_values, skipinitialspace, skiprows, skipfooter, nrows, na_values, keep_default_na, na_filter, verbose, skip_blank_lines, parse_dates, infer_datetime_format, keep_date_col, date_parser, dayfirst, cache_dates, iterator, chunksize, compression, thousands, decimal, lineterminator, quotechar, quoting, doublequote, escapechar, comment, encoding, dialect, error_bad_lines, warn_bad_lines, delim_whitespace, low_memory, memory_map, float_precision)
    683         )
    684 
--> 685         return _read(filepath_or_buffer, kwds)
    686 
    687     parser_f.__name__ = name

C:\ProgramData\Anaconda3\lib\site-packages\pandas\io\parsers.py in _read(filepath_or_buffer, kwds)
    455 
    456     # Create the parser.
--> 457     parser = TextFileReader(fp_or_buf, **kwds)
    458 
    459     if chunksize or iterator:

C:\ProgramData\Anaconda3\lib\site-packages\pandas\io\parsers.py in __init__(self, f, engine, **kwds)
    893             self.options["has_index_names"] = kwds["has_index_names"]
    894 
--> 895         self._make_engine(self.engine)
    896 
    897     def close(self):

C:\ProgramData\Anaconda3\lib\site-packages\pandas\io\parsers.py in _make_engine(self, engine)
   1133     def _make_engine(self, engine="c"):
   1134         if engine == "c":
-> 1135             self._engine = CParserWrapper(self.f, **self.options)
   1136         else:
   1137             if engine == "python":

C:\ProgramData\Anaconda3\lib\site-packages\pandas\io\parsers.py in __init__(self, src, **kwds)
   1915         kwds["usecols"] = self.usecols
   1916 
-> 1917         self._reader = parsers.TextReader(src, **kwds)
   1918         self.unnamed_cols = self._reader.unnamed_cols
   1919 

pandas\_libs\parsers.pyx in pandas._libs.parsers.TextReader.__cinit__()

pandas\_libs\parsers.pyx in pandas._libs.parsers.TextReader._get_header()

UnicodeDecodeError: 'gb2312' codec can't decode byte 0x93 in position 2: illegal multibyte sequence

目前對于中文而言,最常使用的有 utf-8gb2312 兩種格式,只需要指定正確的編碼。在不知道編碼的情況下,只需要嘗試兩次即可。padas默認(rèn)的文件編碼格式是 utf-8,所以如果出現(xiàn)以上錯誤,只需使用 encoding=gb2312 再嘗試一下即可,如 pd.read_csv(file, encoding='gb2312')。

空值

空值是csv中也非常常見,比如以下內(nèi)容:

import pandas as pd
df = pd.read_csv('people.csv')
v1=df['出生地'][3]
print(v1, type(v1))

輸出為:

nan <class 'float'>

由此可見,空值也是有數(shù)據(jù)類型的,為 float 類型。

如何判斷空值有兩種方法,可以使用 math.isnan(x) 也可以使用 isinstance(float)。我們知道,DateFrame對象是包括Series對象,而在一個Series對象中,所有的數(shù)據(jù)類型默認(rèn)是一樣的,所以如果其數(shù)據(jù)類型推斷為字符串(str),那么直接使用 math.isnan(x) 則會報錯 TypeError: must be real number, not str 錯誤,即必需為實數(shù),不能是字符串。所以,這時我們還需要使用 isinstance(x, flaot) 方法。
具體請看這個示例:

df.出生地=df.出生地.map(lambda x: '其他' if isinstance(x, float) else x)
df

在這里插入圖片描述

函數(shù)映射

方法1:直接使用labmda表達式

需要對數(shù)據(jù)列進行復(fù)雜操作的時候,我們可以使用以下函數(shù)時行相應(yīng)的操作。

df=df.fillna('未知')
df.愛好=df.愛好.map(lambda x: x.split(' ')[0].split('-')[0].split(',')[0])
df

在這里插入圖片描述

方法二:使用自定義函數(shù)

在進行映射時,如果操作比較簡單,可以使用字典的方式進行數(shù)值映射映射(參見下文)。但是如果操作比較復(fù)雜,則需要使用函數(shù)進行映射。請看這個示例,讀取到性別時,內(nèi)容有 ‘m', ‘M', ‘Female' 等內(nèi)容,現(xiàn)在需要其全部轉(zhuǎn)換為

def set_sex(s):
    if s.lower() == 'm' or s.lower() == 'male':
        return '男'
    elif s.lower() == 'female':
        return '女'        
    return s

df = pd.read_csv('people.csv', converters={'性別': lambda x : set_sex(x)})
df

在這里插入圖片描述

方法三:使用數(shù)值字典映射

在數(shù)據(jù)處理時,數(shù)值型往往比字符串效率更高,所以在可能的情況下,我們希望將數(shù)據(jù)轉(zhuǎn)換成字符串處理。請看這個示例,將輸入的數(shù)據(jù)的性別中的男性轉(zhuǎn)換為1 女性轉(zhuǎn)換為0。操作如下:

在這里插入圖片描述

到此這篇關(guān)于使用Python pandas讀取CSV文件應(yīng)該注意什么?的文章就介紹到這了,更多相關(guān)pandas讀取CSV文件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python解析命令行讀取參數(shù)--argparse模塊使用方法

    Python解析命令行讀取參數(shù)--argparse模塊使用方法

    這篇文章主要介紹了Python解析命令行讀取參數(shù)--argparse模塊使用方法,需要的朋友可以參考下
    2018-01-01
  • Python基礎(chǔ)語法(Python基礎(chǔ)知識點)

    Python基礎(chǔ)語法(Python基礎(chǔ)知識點)

    這篇文章主要介紹了Python基礎(chǔ)語法(Python基礎(chǔ)知識點),需要的朋友可以參考下
    2016-02-02
  • Python利用命名空間解析XML文檔

    Python利用命名空間解析XML文檔

    這篇文章主要介紹了Python利用命名空間解析XML文檔,幫助大家更好的理解和學(xué)習(xí)Python,感興趣的朋友可以了解下
    2020-08-08
  • 如何使用五行Python代碼輕松實現(xiàn)批量摳圖

    如何使用五行Python代碼輕松實現(xiàn)批量摳圖

    簡單來說,摳圖就是將照片的主體人或物品從圖片中摳出來,以便貼到別處使用,下面這篇文章主要給大家介紹了關(guān)于如何使用五行Python代碼輕松實現(xiàn)批量摳圖的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-04-04
  • python實現(xiàn)跨年表白神器--你值得擁有

    python實現(xiàn)跨年表白神器--你值得擁有

    這篇文章主要介紹了python實現(xiàn)跨年表白神器的方法,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2021-01-01
  • python密碼學(xué)庫pynacl功能介紹

    python密碼學(xué)庫pynacl功能介紹

    PyNaCI能夠提供數(shù)字簽名、密鑰加密、公鑰加密、哈希和消息身份驗證、基于密碼的密鑰派生和密碼散列功能,這篇文章主要介紹了python密碼學(xué)庫pynacl,感興趣的朋友一起看看吧
    2022-05-05
  • python逐行讀寫txt文件的實例講解

    python逐行讀寫txt文件的實例講解

    下面小編就為大家分享一篇python逐行讀寫txt文件的實例講解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-04-04
  • .dcm格式文件軟件讀取及python處理詳解

    .dcm格式文件軟件讀取及python處理詳解

    今天小編就為大家分享一篇.dcm格式文件軟件讀取及python處理詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-01-01
  • 基于Python實現(xiàn)二維圖像雙線性插值

    基于Python實現(xiàn)二維圖像雙線性插值

    雙線性插值,又稱為雙線性內(nèi)插。在數(shù)學(xué)上,雙線性插值是有兩個變量的插值函數(shù)的線性插值擴展,其核心思想是在兩個方向分別進行一次線性插值。本文將用Python實現(xiàn)二維圖像雙線性插值,感興趣的可以了解下
    2022-06-06
  • Pandas對CSV文件讀寫操作詳解

    Pandas對CSV文件讀寫操作詳解

    本文帶你了解CSV文件的基礎(chǔ)知識,那么當(dāng)需要處理導(dǎo)入數(shù)據(jù)時,大多數(shù)?CSV?讀取、處理和寫入任務(wù)都可以通過基本的?Python?csv?庫輕松處理。如果大量數(shù)據(jù)要讀取和處理,該pandas庫還提供快速簡便的?CSV?處理功能
    2022-04-04

最新評論

浦东新区| 玉树县| 兴宁市| 怀远县| 承德市| 哈尔滨市| 新邵县| 渝中区| 论坛| 新民市| 延庆县| 宁海县| 高安市| 绥中县| 敦煌市| 东山县| 遵义县| 乐平市| 台江县| 泉州市| 博野县| 蚌埠市| 上林县| 临泽县| 东乌珠穆沁旗| 尚义县| 皮山县| 和顺县| 南靖县| 翼城县| 桐城市| 山东省| 乌苏市| 新郑市| 康定县| 景洪市| 贵州省| 伊通| 新源县| 壤塘县| 孟州市|