欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python?中?Pandas?文件操作和讀取?CSV?參數(shù)詳解

 更新時間:2023年03月01日 08:59:24   作者:虛心求知的熊  
CSV?又稱逗號分隔值文件,是一種簡單的文件格式,以特定的結構來排列表格數(shù)據(jù),這篇文章主要介紹了Python?之?Pandas?文件操作和讀取?CSV?參數(shù)詳解,需要的朋友可以參考下

一、Pandas 讀取文件

  • 當使用 Pandas 做數(shù)據(jù)分析的時,需要讀取事先準備好的數(shù)據(jù)集,這是做數(shù)據(jù)分析的第一步。Panda 提供了多種讀取數(shù)據(jù)的方法,針對不同的文件格式,有以下幾種:
  • (1) read_csv() 用于讀取文本文件。
  • (2) read_excel() 用于讀取文本文件。
  • (3) read_json() 用于讀取 json 文件。
  • (4) read_sql_query() 讀取 sql 語句的。
  • 其通用的流程如下:
  • (1) 導入庫 import pandas as pd。
  • (2) 找到文件所在位置(絕對路徑 = 全稱)(相對路徑 = 和程序在同一個文件夾中的路徑的簡稱)。
  • (3) 變量名 = pd.讀寫操作方法(文件路徑,具體的篩選條件,……)。

二、CSV 文件讀取

  • CSV 又稱逗號分隔值文件,是一種簡單的文件格式,以特定的結構來排列表格數(shù)據(jù)。 CSV 文件能夠以純文本形式存儲表格數(shù)據(jù),比如電子表格、數(shù)據(jù)庫文件,并具有數(shù)據(jù)交換的通用格式。CSV 文件會在 Excel 文件中被打開,其行和列都定義了標準的數(shù)據(jù)格式。
  • 將 CSV 中的數(shù)據(jù)轉換為 DataFrame 對象是非常便捷的。和一般文件讀寫不一樣,它不需要你做打開文件、讀取文件、關閉文件等操作。相反,您只需要一行代碼就可以完成上述所有步驟,并將數(shù)據(jù)存儲在 DataFrame 中。
  • 下面進行實例演示,源數(shù)據(jù)如下:

在這里插入圖片描述

首先,我們對 CSV 文件進行讀取,可以通過相對路徑,也可以通過 os 動態(tài)取得絕對路徑 os.getcwd() os.path.json。

import pandas as pd
df = pd.read_csv("./data/my_csv.csv")
print(df,type(df))
#   col1 col2  col3    col4      col5
#0     2    a   1.4   apple  2022/1/1
#1     3    b   3.4  banana  2022/1/2
#2     6    c   2.5  orange  2022/1/5
#3     5    d   3.2   grape  2022/1/7 <class 'pandas.core.frame.DataFrame'>

我們可以通過 os.getcwd() 讀取文件的存儲路徑。

import os
os.getcwd()
#'C:\\Users\\CQB\\Desktop\\內蒙農業(yè)大學數(shù)據(jù)分析教案和代碼\\第16天'

其語法模板如下:

read_csv(filepath_or_buffer, sep=',',  header='infer', names=None, index_col=None, usecols=None, squeeze=None, prefix=None, 
mangle_dupe_cols=True, dtype=None, engine=None, converters=None, true_values=None, false_values=None, skipinitialspace=False, 
skiprows=None, skipfooter=0, nrows=None, na_values=None, keep_default_na=True, na_filter=True, verbose=False, 
skip_blank_lines=True, parse_dates=None, infer_datetime_format=False, keep_date_col=False, date_parser=None, dayfirst=False,
cache_dates=True, iterator=False, chunksize=None, compression='infer', thousands=None, decimal='.', lineterminator=None, 
quotechar='"', quoting=0, doublequote=True, escapechar=None, comment=None, encoding=None, encoding_errors='strict', dialect=None, 
error_bad_lines=None, warn_bad_lines=None, on_bad_lines=None, delim_whitespace=False, low_memory=True, memory_map=False, 
float_precision=None, storage_options=None)

1. 基本參數(shù)

  • (1) filepath_or_buffer(數(shù)據(jù)輸入的路徑):可以是文件路徑、可以是 URL,也可以是實現(xiàn) read 方法的任意對象。這個參數(shù),就是我們輸入的第一個參數(shù)。
  • 我們可以直接 read_csv 讀取我們想要的文件。
import pandas as pd
pd.read_csv(r"data\students.csv")
#id	name	address	gender	birthday
#0	1	朱夢雪	地球村	女	2004/11/2
#1	2	許文博	月亮星	女	2003/8/7
#2	3	張兆媛	艾爾星	女	2004/11/2
#3	4	付延旭	克哈星	男	2003/10/11
#4	5	王杰	查爾星	男	2002/6/12
#5	6	董澤宇	塔桑尼斯	男	2002/2/12
  • 還可以是一個 URL,如果訪問該 URL 會返回一個文件的話,那么 pandas 的 read_csv函 數(shù)會自動將該文件進行讀取。比如:我們服務器上放的數(shù)據(jù),將剛才的文件返回。
  • 但需要注意的是,他需要網(wǎng)絡請求,因此讀取文件比較慢。
pd.read_csv("http://my-teaching.top/static/data/students.csv") 

里面還可以是一個 _io.TextIOWrapper,其中,pandas 默認使用 utf-8 讀取文件,比如:

f = open(r"data\students.csv", encoding="utf-8")
pd.read_csv(f)
#id	name	address	gender	birthday
#0	1	朱夢雪	地球村	女	2004/11/2
#1	2	許文博	月亮星	女	2003/8/7
#2	3	張兆媛	艾爾星	女	2004/11/2
#3	4	付延旭	克哈星	男	2003/10/11
#4	5	王杰	查爾星	男	2002/6/12
#5	6	董澤宇	塔桑尼斯	男	2002/2/12

(2) sep:讀取 csv 文件時指定的分隔符,默認為逗號。注意:csv 文件的分隔符和我們讀取 csv 文件時指定的分隔符一定要一致。

import pandas as pd
pd.read_csv(r"data\students_step.csv")
#id|name|address|gender|birthday
#0	1|朱夢雪|地球村|女|2004/11/2
#1	2|許文博|月亮星|女|2003/8/7
#2	3|張兆媛|艾爾星|女|2004/11/2
#3	4|付延旭|克哈星|男|2003/10/11
#4	5|王杰|查爾星|男|2002/6/12
#5	6|董澤宇|塔桑尼斯|男|2002/2/12

由于指定的分隔符和 csv 文件采用的分隔符不一致,因此多個列之間沒有分開,而是連在一起了。 所以,我們需要將分隔符設置成 \t 才可以。

df = pd.read_csv(r"data\students_step.csv", sep="|")
df
#id	name	address	gender	birthday
#0	1	朱夢雪	地球村	女	2004/11/2
#1	2	許文博	月亮星	女	2003/8/7
#2	3	張兆媛	艾爾星	女	2004/11/2
#3	4	付延旭	克哈星	男	2003/10/11
#4	5	王杰	查爾星	男	2002/6/12
#5	6	董澤宇	塔桑尼斯	男	2002/2/12

(3) delim_whitespace:默認為 False,設置為 True 時,表示分割符為空白字符,可以是空格、\t 等等。不管分隔符是什么,只要是空白字符,那么可以通過 delim_whitespace=True 進行讀取。如下,我們對 delim_whitespace 不設置,也就是默認為 False,會發(fā)現(xiàn)讀取有點問題。

df = pd.read_csv(r"data\students_whitespace.txt", sep=" ")
df
#id	name	address	gender	birthday
#0	1	朱夢雪	地球村	女	2004/11/2
#1	2	許文博\t月亮星	女	2003/8/7	NaN
#2	3	張兆媛	艾爾星	女	2004/11/2
#3	4	付延旭	克哈星	男	2003/10/11
#4	5	王杰\t查爾星	男	2002/6/12	NaN
#5	6	董澤宇\t塔桑尼斯	男	2002/2/12	NaN

對此,我們將 delim_whitespace 設置為 True,便會得到我們想要的讀取結果。

df = pd.read_csv(r"data\students_whitespace.txt", delim_whitespace=True)
df
#id	name	address	gender	birthday
#0	1	朱夢雪	地球村	女	2004/11/2
#1	2	許文博	月亮星	女	2003/8/7
#2	3	張兆媛	艾爾星	女	2004/11/2
#3	4	付延旭	克哈星	男	2003/10/11
#4	5	王杰	查爾星	男	2002/6/12
#5	6	董澤宇	塔桑尼斯	男	2002/2/12
  • (4) header:用作列名的行號,以及數(shù)據(jù)的開頭。
  • 默認行為是推斷列名:如果沒有傳遞任何名稱,則該行為與 header=0 相同,并且從文件的第一行推斷列名,如果顯式傳遞列名,則該行為與 header=None 相同。
  • 顯式傳遞 header=0 以替換現(xiàn)有名稱。標題可以是整數(shù)列表,指定列上多索引的行位置,例如 [0,1,3]。未指定的中間行將被跳過(例如,本例中跳過 2 行)。
  • 這里需要注意,如果 skip_blank_lines=True,此參數(shù)將忽略注釋行和空行,因此 header=0 表示數(shù)據(jù)的第一行,而不是文件的第一行。
  • (5) names:當 names 沒被賦值時,header 會變成 0,即選取數(shù)據(jù)文件的第一行作為列名;當 names 被賦值,header 沒被賦值時,那么 header 會變成 None。如果都賦值,就會實現(xiàn)兩個參數(shù)的組合功能。
  • (a) names 沒有被賦值,header 也沒賦值:
  • 這種情況下,header 為 0,即選取文件的第一行作為表頭。
pd.read_csv(r"data\students.csv")
#id	name	address	gender	birthday
#0	1	朱夢雪	地球村	女	2004/11/2
#1	2	許文博	月亮星	女	2003/8/7
#2	3	張兆媛	艾爾星	女	2004/11/2
#3	4	付延旭	克哈星	男	2003/10/11
#4	5	王杰	查爾星	男	2002/6/12
#5	6	董澤宇	塔桑尼斯	男	2002/2/12
  • (b) names 沒有被賦值,header 被賦值:
  • 如果不指定 names,指定 header 為 1,則選取第二行當做表頭,第二行下面為數(shù)據(jù)。
pd.read_csv(r"data\students.csv", header=1)
#1	朱夢雪	地球村	女	2004/11/2
#0	2	許文博	月亮星	女	2003/8/7
#1	3	張兆媛	艾爾星	女	2004/11/2
#2	4	付延旭	克哈星	男	2003/10/11
#3	5	王杰	查爾星	男	2002/6/12
#4	6	董澤宇	塔桑尼斯	男	2002/2/12

(c) names 被賦值,header 沒有被賦值:

pd.read_csv(r"data\students.csv", names=["編號", "姓名", "地址", "性別", "出生日期"])
#編號	姓名	地址	性別	出生日期
#0	id	name	address	gender	birthday
#1	1	朱夢雪	地球村	女	2004/11/2
#2	2	許文博	月亮星	女	2003/8/7
#3	3	張兆媛	艾爾星	女	2004/11/2
#4	4	付延旭	克哈星	男	2003/10/11
#5	5	王杰	查爾星	男	2002/6/12
#6	6	董澤宇	塔桑尼斯	男	2002/2/12
  • 可以看到,names 適用于沒有表頭的情況,指定 names 沒有指定 header,那么 header 相當于 None。
  • 一般來說,讀取文件的時候會有一個表頭,一般默認是第一行,但是有的文件中是沒有表頭的,那么這個時候就可以通過 names 手動指定、或者生成表頭,而文件里面的數(shù)據(jù)則全部是內容。
  • 所以這里 id、name、address、date 也當成是一條記錄了,本來它是表頭的,但是我們指定了 names,所以它就變成數(shù)據(jù)了,表頭是我們在 names 里面指定的。
  • (a) names 和 header 都被賦值:
pd.read_csv(r"data\students.csv",
            names=["編號", "姓名", "地址", "性別", "出生日期"],
            header=1)
#編號	姓名	地址	性別	出生日期
#0	2	許文博	月亮星	女	2003/8/7
#1	3	張兆媛	艾爾星	女	2004/11/2
#2	4	付延旭	克哈星	男	2003/10/11
#3	5	王杰	查爾星	男	2002/6/12
#4	6	董澤宇	塔桑尼斯	男	2002/2/12
  • 這個時候,相當于先不看 names,只看 header,header 為 0 代表先把第一行當做表頭,下面的當成數(shù)據(jù);然后再把表頭用 names 給替換掉。
  • names 和 header 的使用場景主要如下:
  • (1) csv 文件有表頭并且是第一行,那么 names 和 header 都無需指定;
  • (2) csv 文件有表頭、但表頭不是第一行,可能從下面幾行開始才是真正的表頭和數(shù)據(jù),這個時候指定 header 即可;
  • (3) csv 文件沒有表頭,全部是純數(shù)據(jù),那么我們可以通過 names 手動生成表頭;
  • (4) csv 文件有表頭、但是這個表頭你不想用,這個時候同時指定 names 和 header。先用 header 選出表頭和數(shù)據(jù),然后再用 names 將表頭替換掉,就等價于將數(shù)據(jù)讀取進來之后再對列名進行 rename。
  • (6) index_col:我們在讀取文件之后所得到的 DataFrame 的索引默認是 0、1、2……,我們可以通過 set_index 設定索引,但是也可以在讀取的時候就指定某列為索引。
df = pd.read_csv(r"data\students.csv", index_col="birthday")
df
#           id	 name  address gender
#birthday				
#2004/11/2	1	朱夢雪	地球村	女
#2003/8/7	2	許文博	月亮星	女
#2004/11/2	3	張兆媛	艾爾星	女
#2003/10/11	4	付延旭	克哈星	男
#2002/6/12	5	王杰	查爾星	男
#2002/2/12	6	董澤宇	塔桑尼斯 男

也可以用來刪除指定列。

df.index=df['birthday']
del df['birthday']
df
#          id	name	address	gender
#birthday				
#2004/11/2	1	朱夢雪	地球村	女
#2003/8/7	2	許文博	月亮星	女
#2004/11/2	3	張兆媛	艾爾星	女
#2003/10/11	4	付延旭	克哈星	男
#2002/6/12	5	王杰	查爾星	男
#2002/2/12	6	董澤宇	塔桑尼斯	男

我們在讀取的時候指定了 name 列作為索引; 此外,除了指定單個列,還可以指定多列作為索引,比如 [“id”, “name”]。同時,我們除了可以輸入列名外,還可以輸入列對應的索引。比如:“id”、“name”、“address”、"date"對應的索引就分別是 0、1、2、3。

df2 = pd.read_csv(r"data\students.csv", index_col=["gender","birthday"])
df2
#             id	name	address
#gender	birthday			
#女	2004/11/2	1	朱夢雪	地球村
#   2003/8/7	2	許文博	月亮星
#   2004/11/2	3	張兆媛	艾爾星
#男	2003/10/11	4	付延旭	克哈星
#   2002/6/12	5	王杰	查爾星
#   2002/2/12	6	董澤宇	塔桑尼斯

使用 loc 刪選也是同樣的道理。

df2.loc["女"]
#         id	name	address
#birthday			
#2004/11/2	1	朱夢雪	地球村
#2003/8/7	2	許文博	月亮星
#2004/11/2	3	張兆媛	艾爾星
  • (7) usecols:返回列的子集。
  • 如果是類似列表的,則所有元素都必須是位置性的(即文檔列中的整數(shù)索引),或者是與用戶在名稱中提供的列名或從文檔標題行推斷的列名相對應的字符串。如果給出了名稱,則不考慮文檔標題行。
pd.read_csv(r"data\students.csv", usecols=["name","birthday"])
#   name
#0	朱夢雪
#1	許文博
#2	張兆媛
#3	付延旭
#4	王杰
#5	董澤宇

2. 通用解析參數(shù)

(1) encoding:表示這只編碼格式,utf-8,gbk。

pd.read_csv(r"data\students_gbk.csv") # UnicodeDecodeError 
  • 如果提示錯誤喂 UnicodeDecodeError —> 需要想到編碼問題。
  • pandas 默認使用 utf-8 格式讀取。
pd.read_csv(r"data\students_gbk.csv", encoding="gbk") 
#id	name	address	gender	birthday
#0	1	朱夢雪	地球村	女	2004/11/2
#1	2	許文博	月亮星	女	2003/8/7
#2	3	張兆媛	艾爾星	女	2004/11/2
#3	4	付延旭	克哈星	男	2003/10/11
#4	5	王杰	查爾星	男	2002/6/12
#5	6	董澤宇	塔桑尼斯	男	2002/2/12
  • (2) dtype:在讀取數(shù)據(jù)的時候,設定字段的類型。
  • 比如,公司員工的 id 一般是:00001234,如果默認讀取的時候,會顯示為 1234,所以這個時候要把他轉為字符串類型,才能正常顯示為 00001234。
df = pd.read_csv(r"data\students_step_001.csv", sep="|")
df
#id	name	address	gender	birthday
#0	1	朱夢雪	地球村	女	2004/11/2
#1	2	許文博	月亮星	女	2003/8/7
#2	3	張兆媛	艾爾星	女	2004/11/2
#3	4	付延旭	克哈星	男	2003/10/11
#4	5	王杰	查爾星	男	2002/6/12
#5	6	董澤宇	塔桑尼斯	男	2002/2/12

我們將 id 的數(shù)據(jù)類型設置為字符串,便可以顯示為 001 之類的。

df = pd.read_csv(r"data\students_step_001.csv", sep="|", dtype ={"id":str}) 
df
#id	name	address	gender	birthday
#0	001	朱夢雪	地球村	女	2004/11/2
#1	002	許文博	月亮星	女	2003/8/7
#2	003	張兆媛	艾爾星	女	2004/11/2
#3	004	付延旭	克哈星	男	2003/10/11
#4	005	王杰	查爾星	男	2002/6/12
#5	006	董澤宇	塔桑尼斯	男	2002/2/12
  • (3) converters:在讀取數(shù)據(jù)的時候對列數(shù)據(jù)進行變換.
  • 例如將 id 增加 10,但是注意 int(x),在使用 converters 參數(shù)時,解析器默認所有列的類型為 str,所以需要進行類型轉換。
pd.read_csv('data\students.csv', converters={"id": lambda x: int(x) + 10})
#id	name	address	gender	birthday
#0	11	朱夢雪	地球村	女	2004/11/2
#1	12	許文博	月亮星	女	2003/8/7
#2	13	張兆媛	艾爾星	女	2004/11/2
#3	14	付延旭	克哈星	男	2003/10/11
#4	15	王杰	查爾星	男	2002/6/12
#5	16	董澤宇	塔桑尼斯	男	2002/2/12
  • (4) true_values 和 false_values:指定哪些值應該被清洗為 True,哪些值被清洗為 False。
  • 我們以性別為例,男設置為 True,女設置為 False。
pd.read_csv('data\students.csv', true_values=['男'], false_values=['女'])
#   id	name	address	gender	birthday
#0	1	朱夢雪	地球村	False	2004/11/2
#1	2	許文博	月亮星	False	2003/8/7
#2	3	張兆媛	艾爾星	False	2004/11/2
#3	4	付延旭	克哈星	True	2003/10/11
#4	5	王杰	查爾星	True	2002/6/12
#5	6	董澤宇	塔桑尼斯	True	2002/2/12
  • 這里的替換規(guī)則為,只有當某一列的數(shù)據(jù)類別全部出現(xiàn)在 true_values + false_values 里面,才會被替換。
  • (5) skiprows:表示過濾行,想過濾掉哪些行,就寫在一個列表里面?zhèn)鬟f給 skiprows 即可。注意的是,這里是先過濾,然后再確定表頭,比如:
pd.read_csv('data\students.csv', skiprows=[0,3])
#   1	朱夢雪	地球村	女	2004/11/2
#0	2	許文博	月亮星	女	2003/8/7
#1	4	付延旭	克哈星	男	2003/10/11
#2	5	王杰	查爾星	男	2002/6/12
#3	6	董澤宇	塔桑尼斯	男	2002/2/12

這里把第一行過濾掉了,因為第一行是表頭,所以在過濾掉之后第二行就變成表頭了。 當然里面除了傳入具體的數(shù)值,來表明要過濾掉哪些行,還可以傳入一個函數(shù)。

pd.read_csv('data\students.csv', skiprows=lambda x: x > 0 and x % 2 == 0)
#  id	name	address	gender	birthday
#0	1	朱夢雪	地球村	女	2004/11/2
#1	3	張兆媛	艾爾星	女	2004/11/2
#2	5	王杰	查爾星	男	2002/6/12
  • 由于索引從 0 開始,所以凡是索引大于 0、并且%2 等于 0 的記錄都過濾掉。索引大于 0,是為了保證表頭不被過濾掉。
  • (6) skipfooter:表示從文件末尾過濾行。
pd.read_csv('data\students.csv', skipfooter=1)

上述代碼運行后會出現(xiàn)報錯,并且表格中的數(shù)據(jù)都變成亂碼,具體原因下方有解釋。

pd.read_csv('data\students.csv', skipfooter=1, engine="python", encoding="utf-8")
#  id	name	address	gender	birthday
#0	1	朱夢雪	地球村	女	2004/11/2
#1	2	許文博	月亮星	女	2003/8/7
#2	3	張兆媛	艾爾星	女	2004/11/2
#3	4	付延旭	克哈星	男	2003/10/11
#4	5	王杰	查爾星	男	2002/6/12
  • pandas 解析數(shù)據(jù)時用的引擎,目前解析引擎有兩種:c、python。默認為 c,因為 c 引擎解析速度更快,但是特性沒有 python 引擎全。
  • skipfooter 接收整型,表示從結尾往上過濾掉指定數(shù)量的行,因為引擎退化為 python,那么要手動指定 engine=“python”,不然會警告。另外需要指定 encoding=“utf-8”,因為 csv 存在編碼問題,當引擎退化為 python 的時候,在 Windows 上讀取會亂碼。
  • (7) nrows:表示設置一次性讀入的文件行數(shù),在讀入大文件時很有用,比如 16G 內存的 PC 無法容納幾百 G 的大文件。
pd.read_csv('data\students.csv', nrows=3)
#  id	name	address	gender	birthday
#0	1	朱夢雪	地球村	女	2004/11/2
#1	2	許文博	月亮星	女	2003/8/7
#2	3	張兆媛	艾爾星	女	2004/11/2

3. 空值處理相關參數(shù)

na_values:該參數(shù)可以配置哪些值需要處理成 NaN。

pd.read_csv('data\students.csv', na_values=["女", "朱夢雪"])
  #id	name	address	gender	birthday
#0	1	NaN	地球村	NaN	2004/11/2
#1	2	許文博	月亮星	NaN	2003/8/7
#2	3	張兆媛	艾爾星	NaN	2004/11/2
#3	4	付延旭	克哈星	男	2003/10/11
#4	5	王杰	查爾星	男	2002/6/12
#5	6	董澤宇	塔桑尼斯	男	2002/2/12

可以看到將女和朱夢雪設置成了NaN,這里的情況是不同的列中包含了不同的值。

4. 時間處理相關參數(shù)

  • parse_dates:指定某些列為時間類型,這個參數(shù)一般搭配 date_parser 使用。
  • date_parser:是用來配合 parse_dates 參數(shù)的,因為有的列雖然是日期,但沒辦法直接轉化,需要我們指定一個解析格式。
df = pd.read_csv('data\students.csv')
df.dtypes
#id           int64
#name        object
#address     object
#gender      object
#birthday    object
#dtype: object

我們通過 parse_dates 將 birthday 設置為時間類型。

df = pd.read_csv('data\students.csv', parse_dates=["birthday"])
df.dtypes
#id                   int64
#name                object
#address             object
#gender              object
#birthday    datetime64[ns]
#dtype: object

5. 分塊讀入相關參數(shù)

  • (1) iterator:迭代器,iterator 為 bool 類型,默認為 False。
  • 如果為 True,那么返回一個 TextFileReader 對象,以便逐塊處理文件。這個在文件很大、內存無法容納所有數(shù)據(jù)文件時,可以分批讀入,依次處理。
chunk = pd.read_csv('data\students.csv', iterator=True)
chunk
#<pandas.io.parsers.TextFileReader at 0x1b27f00ef88>

我們已經對文件進行了分塊操作,可以先提取出前兩行。

print(chunk.get_chunk(2))
#   id name address gender   birthday
#0   1  朱夢雪     地球村      女  2004/11/2
#1   2  許文博     月亮星      女   2003/8/7

文件還剩下四行,但是我們指定讀取100,那么也不會報錯,不夠指定的行數(shù),那么有多少返回多少。

print(chunk.get_chunk(100))
#   id name address gender    birthday
#2   3  張兆媛     艾爾星      女   2004/11/2
#3   4  付延旭     克哈星      男  2003/10/11
#4   5   王杰     查爾星      男   2002/6/12
#5   6  董澤宇    塔桑尼斯      男   2002/2/12

這里需要注意的是,在讀取完畢之后,再讀的話就會報錯了。(2) chunksize:整型,默認為 None,設置文件塊的大小。chunksize 還是返回一個類似于迭代器的對象,當我們調用 get_chunk,如果不指定行數(shù),那么就是默認的 chunksize。

chunk = pd.read_csv('data\students.csv', chunksize=2)
print(chunk)  
print(chunk.get_chunk())
#<pandas.io.parsers.TextFileReader object at 0x000001B27F05C5C8>
#   id name address gender   birthday
#0   1  朱夢雪     地球村      女  2004/11/2
#1   2  許文博     月亮星      女   2003/8/7
  • 我們再使用兩次 print(chunk.get_chunk()) 就可以分步讀取出所有的數(shù)據(jù),因為這里的 chunksize 設置為 2。
  • 我們也可以指定 chunk.get_chunk() 的參數(shù)。
  • 以上便是 pandas 的 read_csv 函數(shù)中絕大部分參數(shù)了,同時其中的部分參數(shù)也適用于讀取其它類型的文件。
  • 其實在讀取 csv 文件時所使用的參數(shù)不多,很多參數(shù)平常我們都不會用到的,不過不妨礙我們了解一下,因為在某些特定的場景下它們是可以很方便地幫我們解決一些問題的。
  • 個人感覺分塊讀取這個參數(shù)最近在工作中提高了很大的效率。

到此這篇關于Python 之 Pandas 文件操作和讀取 CSV 參數(shù)詳解的文章就介紹到這了,更多相關Python  Pandas讀取 CSV 參數(shù)內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • python基礎之文件的備份以及定位

    python基礎之文件的備份以及定位

    這篇文章主要介紹了python文件的備份以及定位,實例分析了Python中返回一個返回值與多個返回值的方法,需要的朋友可以參考下
    2021-10-10
  • Python使用multiprocessing創(chuàng)建進程的方法

    Python使用multiprocessing創(chuàng)建進程的方法

    這篇文章主要介紹了Python使用multiprocessing創(chuàng)建進程的方法,實例分析了multiprocessing模塊操作進程的相關技巧,需要的朋友可以參考下
    2015-06-06
  • 老生常談python中的重載

    老生常談python中的重載

    所謂重載,就是多個相同函數(shù)名的函數(shù),根據(jù)傳入的參數(shù)個數(shù),參數(shù)類型而執(zhí)行不同的功能。所以函數(shù)重載實質上是為了解決編程中參數(shù)可變不統(tǒng)一的問題。這篇文章主要介紹了老生常談python中的重載,需要的朋友可以參考下
    2018-11-11
  • 基于Python第三方插件實現(xiàn)西游記章節(jié)標注漢語拼音的方法

    基于Python第三方插件實現(xiàn)西游記章節(jié)標注漢語拼音的方法

    這篇文章主要介紹了基于Python第三方插件實現(xiàn)西游記章節(jié)標注漢語拼音的方法,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-05-05
  • Python 內存管理機制全面分析

    Python 內存管理機制全面分析

    這篇文章主要介紹了Python 內存管理機制全面分析,幫助大家更好的理解和使用python,感興趣的朋友可以了解下
    2021-01-01
  • 基于Python編寫一個B站全自動抽獎的小程序

    基于Python編寫一個B站全自動抽獎的小程序

    本文將利用Python編寫一個B站全自動抽獎的小程序,可以實時監(jiān)控自己關注的UP主,如果關注的UP主中有人發(fā)布了抽獎的動態(tài),就自動參與這個抽獎。這樣就能不錯過任何一個可以暴富的機會了。需要的可以參考一下
    2022-03-03
  • python目標檢測實現(xiàn)黑花屏分類任務示例

    python目標檢測實現(xiàn)黑花屏分類任務示例

    這篇文章主要為大家介紹了python目標檢測實現(xiàn)黑花屏分類任務示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-07-07
  • 基于tensorflow權重文件的解讀

    基于tensorflow權重文件的解讀

    這篇文章主要介紹了關于tensorflow權重文件的解讀,具有很好的參考價值,希望對大家有所幫助。
    2021-05-05
  • 如何利用Playwright庫進行電影網(wǎng)站數(shù)據(jù)的獲取

    如何利用Playwright庫進行電影網(wǎng)站數(shù)據(jù)的獲取

    playwright庫是微軟開源的一個庫,這個庫的功能更加的強大,除了可以實現(xiàn)同步操作,同樣也可以實現(xiàn)異步的操作,這篇文章主要介紹了如何利用Playwright庫進行電影網(wǎng)站數(shù)據(jù)的獲取,需要的朋友可以參考下
    2023-05-05
  • python利用微信公眾號實現(xiàn)報警功能

    python利用微信公眾號實現(xiàn)報警功能

    微信公眾號共有三種,服務號、訂閱號、企業(yè)號。它們在獲取AccessToken上各有不同。接下來通過本文給大家介紹python利用微信公眾號實現(xiàn)報警功能,感興趣的朋友一起看看吧
    2018-06-06

最新評論