pandas讀取xlsx


一、使用pandas讀取xlsx

  引用pandas庫

import pandas as pd
pd.read_excel(path, sheet_name=0, header=0, names=None, index_col=None, 
              usecols=None, squeeze=False,dtype=None, engine=None, 
              converters=None, true_values=None, false_values=None, 
              skiprows=None, nrows=None, na_values=None, parse_dates=False, 
              date_parser=None, thousands=None, comment=None, skipfooter=0, 
              convert_float=True, **kwds)

pandas讀取Excel后返回DataFrame;

二、解析pd.read_excel()的常用參數

1.path --> xlsx的存儲路徑(建議使用英文路徑或者英文命名方式)

import pandas as pd
path = r'D:\Testdatabase\data\data.xlsx'

2.sheet_name --> 讀取工作表(sheet)名稱

sheet_name:None代表讀取所有的sheet,返回的就是一個ordereddict;指定就只讀取指定sheet,只有一個返回的就是dataframe

# 整型數字、列表名、SheetN、或者是以上三組組合列表

# 整型數字:目標sheet所在位置,以0開始,比如sheet_name = 0代表第1個工作表
data = pd.read_excel(path, sheet_name = 1)
ss = data.head()
print(ss)
# 工作表名:目標sheet的名稱,可用中英文 data = pd.read_excel(path, sheet_name = '賬號密碼') data.head() # SheetN:表示第N個sheet,S必須大寫,注意與整型數字的區別使用 data = pd.read_excel(path, sheet_name = 'Sheet5') data.head() # 組合使用 # sheet_name = [0, '車輛信息', 'Sheet4'],代表讀取三個工作表,分別為第1個工作表、名為“車輛信息”的工作表和第4個工作表。顯然,Sheet4未經重命名。 # sheet_name 默認為0,取Excel第一個工作表。如果讀取多個工作表,則顯示表格的字典 data = pd.read_excel(path, sheet_name = ['賬號密碼', '車輛信息'], nrows = 5) # sheet_name = ['賬號密碼', '車輛信息'] ,返回兩個工作表組成的字典 data.head()

3.header --> 指定前幾行作為列名(指定數據表的表頭,默認值為0,即將第一行作為表頭。)

# 默認[0],即首行作為列名,設置為[0,1],即表示將前兩行作為多重索引
data = pd.read_excel(path, sheet_name = '車輛信息', header = [0,1]) 
# 前兩行作為列名。
data.head()
data = pd.read_excel(path, sheet_name = '車輛信息', header = [0,1,2]) 
# 前三行作為列名
data.head()

4.names --> 自定義列名

# 一般適用於Excel缺少列名,或者需要重新定義列名的情況
# 注意:names的長度必須和Excel列長度一致,否則會報錯
data = pd.read_excel(path, sheet_name = '英超射手榜', 
                     names = ['car_plate','sim_num','club','goal','common_goal','penalty'])
data.head()

5.index_col --> 用作索引的列

# 可以是工作表列名稱,如index_col = '車牌號';
data = pd.read_excel(path, sheet_name = '車輛信息', index_col = '車牌號')
data.head()

# 可以是整型或整型列表,如index_col = 0 或 [0, 1],如果選擇多個列,則返回多重索引
data = pd.read_excel(path, sheet_name = '車輛信息', index_col = [0, 1])
data.head()

6.usecols --> 讀取指定的列

# usecols 可避免讀取全量數據,而是以分析需求為導向選擇特定數據,可以大幅提高效率
# 使用整型,從0開始,如[0,2,3]
data = pd.read_excel(io, sheet_name = '車輛信息', usecols = [0, 1, 2])  # 想要讀取第一列、第二列、和第三列的數據
data.head()

# 可以使用Excel傳統的列名“A”、“B”等字母,如“A:C, E” ="A, B, C, E",注意兩邊都包括
data = pd.read_excel(path, sheet_name = '車輛信息', usecols = 'A:C, E')
data.head()

7.squeeze --> 當工作表只有一列

# squeeze為True時,返回Series,反之返回DataFrame
data = pd.read_excel(path, sheet_name = '新增車組名', squeeze  = True)
data.head()

data = pd.read_excel(path, sheet_name = '新增車組名', squeeze  = False)
data.head()

8.skiprows --> 跳過特定行

# skiprows= n, 跳過前n行; skiprows = [a, b, c],跳過第a+1,b+1,c+1行(索引從0開始)
# 使用skiprows 后,有可能首行(即列名)也會被跳過。
data = pd.read_excel(path, sheet_name = '新增車組名', skiprows = [1,2,3]) 
# 跳過第2,3,4行數據(索引從0開始,包括列名)
data.head()

# 跳過前三行
data = pd.read_excel(io, sheet_name = '新增車組名', skiprows = 3)
data.head()

9.nrows --> 讀取指定行數

# 讀取指定行數, nrows = 10 ,即讀取10行數據
data = pd.read_excel(path, sheet_name = '新增車組名', nrows = 10)
data.head()

10.skipfooter --> 跳過末尾N行

data = pd.read_excel(path , sheet_name = '新增車組名', skipfooter = 18)
#  skipfooter = 18, 跳過末尾0-18行(索引從0開始)
data.head()

11.converters --> 強制規定列數據類型

讀數據的時候使用converters指定列數據的數值類型 pd.read_excel('a.xlsx',converters={0: str})

pandas默認將文本類的數據讀取為整型),主要用途:保留以文本形式存儲的數字

 三、常用操作

1.找到指定的一列,並在這一列中進行比較

data['gender'][data['gender'] == 'male'] = 0
data['gender'][data['gender'] == 'female'] = 1

2.保存

pd.DataFrame(data).to_excel(path, sheet_name='Sheet1', index=False, header=True)

3.新增列數據

data['列名稱'] = None
# 值為None(默認值)時,只有列名,沒有數據
data['profession'] = None

4.新增行數據

# 這里的N為excel自動給行加的序號
data.loc[N] = [值1, 值2, ...]
# 比如我在第5行新增
data.loc[5] = ['James', 32, 'male']

5.刪除一列或者刪除一行

# 刪除gender列,需要指定axis為1,當刪除行時,axis為0
data = data.drop('gender', axis=1)

# 刪除第3,4行,這里下表以0開始,並且標題行不算在類
data = data.drop([2, 3], axis=0)

6.遍歷指定列的所有行

data = pd.read_excel(path,sheet_name="sheet1")
for i in data['列名']:
    print(i)
    print(i,type(i))  # type(i) 數據類型,這里的i為字符串
    print(i.split(' ')) # 字符串轉列表
    values=pd.DataFrame(i.split(' '), columns=['新增車組名'])  # 列表轉DataFrame
    print(values) 

7.自動填充、排序、計算、數據過濾、篩選

https://blog.csdn.net/u013089490/article/details/91422685

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM