Excel 是由微軟公司開(kāi)發(fā)的辦公軟件之一,它在日常工作中得到了廣泛的應(yīng)用。在數(shù)據(jù)量較少的情況下,Excel 對(duì)于數(shù)據(jù)的處理、分析、可視化有其獨(dú)特的優(yōu)勢(shì),因此可以顯著提升您的工作效率。但是,當(dāng)數(shù)據(jù)量非常大時(shí),Excel 的劣勢(shì)就暴露出來(lái)了,比如,操作重復(fù)、數(shù)據(jù)分析難等問(wèn)題。Pandas 提供了操作 Excel 文件的函數(shù),可以很方便地處理 Excel 表格。
通過(guò) to_excel() 函數(shù)可以將 Dataframe 中的數(shù)據(jù)寫(xiě)入到 Excel 文件。
如果想要把單個(gè)對(duì)象寫(xiě)入 Excel 文件,那么必須指定目標(biāo)文件名;如果想要寫(xiě)入到多張工作表中,則需要?jiǎng)?chuàng)建一個(gè)帶有目標(biāo)文件名的ExcelWriter對(duì)象,并通過(guò) sheet_name參數(shù)依次指定工作表的名稱。
to_ecxel() 語(yǔ)法格式如下:
DataFrame.to_excel(excel_writer, sheet_name='Sheet1', na_rep='', float_format=None, columns=None, header=True, index=True, index_label=None, startrow=0, startcol=0, engine=None, merge_cells=True, encoding=None, inf_rep='inf', verbose=True, freeze_panes=None)
下表列出函數(shù)的常用參數(shù)項(xiàng),如下表所示:
參數(shù)名稱 | 描述說(shuō)明 |
---|---|
excel_wirter | 文件路徑或者 ExcelWrite 對(duì)象。 |
sheet_name | 指定要寫(xiě)入數(shù)據(jù)的工作表名稱。 |
na_rep | 缺失值的表示形式。 |
float_format | 它是一個(gè)可選參數(shù),用于格式化浮點(diǎn)數(shù)字符串。 |
columns | 指要寫(xiě)入的列。 |
header | 寫(xiě)出每一列的名稱,如果給出的是字符串列表,則表示列的別名。 |
index | 表示要寫(xiě)入的索引。 |
index_label | 引用索引列的列標(biāo)簽。如果未指定,并且 hearder 和 index 均為為 True,則使用索引名稱。如果 DataFrame
使用 MultiIndex,則需要給出一個(gè)序列。 |
startrow | 初始寫(xiě)入的行位置,默認(rèn)值0。表示引用左上角的行單元格來(lái)儲(chǔ)存 DataFrame。 |
startcol | 初始寫(xiě)入的列位置,默認(rèn)值0。表示引用左上角的列單元格來(lái)儲(chǔ)存 DataFrame。 |
engine | 它是一個(gè)可選參數(shù),用于指定要使用的引擎,可以是 openpyxl 或 xlsxwriter。 |
下面看一組簡(jiǎn)單的示例:
import pandas as pd
#創(chuàng)建DataFrame數(shù)據(jù)
info_website = pd.DataFrame({'name': ['編程獅', 'W3Cschool', '微學(xué)苑', '92python'],
'rank': [1, 2, 3, 4],
'language': ['PHP', 'C', 'PHP','Python' ],
'url': ['w3cschool.cn', 'm.w3cschool.cn', 'www.weixueyuan.com','www.92python.com' ]})
#創(chuàng)建ExcelWrite對(duì)象
writer = pd.ExcelWriter('website.xlsx')
info_website.to_excel(writer)
writer.save()
print('輸出成功')
上述代碼執(zhí)行后會(huì)自動(dòng)生成 website.xlsx 文件,文件內(nèi)容如下:
圖1:DataFrame轉(zhuǎn)為Excel
如果您想讀取 Excel 表格中的數(shù)據(jù),可以使用 read_excel() 方法,其語(yǔ)法格式如下:
pd.read_excel(io, 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)
下表對(duì)常用參數(shù)做了說(shuō)明:
參數(shù)名稱 | 說(shuō)明 |
---|---|
io | 表示 Excel 文件的存儲(chǔ)路徑。 |
sheet_name | 要讀取的工作表名稱。 |
header | 指定作為列名的行,默認(rèn)0,即取第一行的值為列名;若數(shù)據(jù)不包含列名,則設(shè)定 header = None。若將其設(shè)置
為 header=2,則表示將前兩行作為多重索引。 |
names | 一般適用于Excel缺少列名,或者需要重新定義列名的情況;names的長(zhǎng)度必須等于Excel表格列的長(zhǎng)度,否則會(huì)報(bào)錯(cuò)。 |
index_col | 用做行索引的列,可以是工作表的列名稱,如 index_col = '列名',也可以是整數(shù)或者列表。 |
usecols | int或list類型,默認(rèn)為None,表示需要讀取所有列。 |
squeeze | boolean,默認(rèn)為False,如果解析的數(shù)據(jù)只包含一列,則返回一個(gè)Series。 |
converters | 規(guī)定每一列的數(shù)據(jù)類型。 |
skiprows | 接受一個(gè)列表,表示跳過(guò)指定行數(shù)的數(shù)據(jù),從頭部第一行開(kāi)始。 |
nrows | 需要讀取的行數(shù)。 |
skipfooter | 接受一個(gè)列表,省略指定行數(shù)的數(shù)據(jù),從尾部最后一行開(kāi)始。 |
示例如下所示:
import pandas as pd
#讀取excel數(shù)據(jù)
df = pd.read_excel('website.xlsx',index_col='name',skiprows=[2])
#處理未命名列
df.columns = df.columns.str.replace('Unnamed.*', 'col_label')
print(df)
輸出結(jié)果:
col_label rank language agelimit name 編程獅 0 1 PHP w3cschool.cn 微學(xué)苑 2 3 PHP www.weixueyuan.com 92python 3 4 Python www.92python.com
再看一組示例:
import pandas as pd
#讀取excel數(shù)據(jù)
#index_col選擇前兩列作為索引列
#選擇前三列數(shù)據(jù),name列作為行索引
df = pd.read_excel('website.xlsx',index_col='name',index_col=[0,1],usecols=[1,2,3])
#處理未命名列,固定用法
df.columns = df.columns.str.replace('Unnamed.*', 'col_label')
print(df)
輸出結(jié)果:
language name rank 編程獅 1 PHP W3cschool 2 C 微學(xué)苑 3 PHP 92python 4 Python
更多建議: