一、csv文件
csv以純文本形式存儲表格數據
pd.read_csv('文件名'),可添加參數engine='python',encoding='gbk'
一般來說,windows系統的默認編碼為gbk,可在cmd窗口通過chcp查看活動頁代碼,936即代表gb2312。
例如我的電腦默認編碼時gb2312,pycharm默認是utf-8編碼,csv內存在中文時會出現錯誤,可通過指定engine或編碼格式解決。
二、excel文件
之前博客寫過通過xlrd和xlwt讀寫xls文件、通過openpyxl讀寫xlsx文件,而pandas即可處理xls文件、也可處理xlsx文件。
pandas讀取的excel結果為一個DataFrame對象,因此DataFrame的許多方法都會被用到,學習DataFrame https://www.cnblogs.com/Forever77/p/11209186.html。
pd.read_excel('文件名'),默認讀取文件的第一個sheet頁,並將第一行當作column,添加一行從0開始的整數作為index。
常用參數sheet_name='':表示讀取文件的哪個sheet頁,可以為sheet頁名稱,也可以使用數字,0表示第一個sheet頁;None會讀取所有有內容的sheet頁。結果為一個字典,字典的key為sheet頁名稱,value為sheet頁內容;默認讀取第一個sheet頁
index_col:將哪一列當作index列,默認添加一列從0開始的整數作為index,通過指定index_col='列名'指定索引列
header:將哪一行當作表頭,即DataFrame的columns,默認將sheet頁的第一行當作表頭,header=1則將第二行當做表頭
假設有一個excel表格內容如下圖1,使用pandas讀取結果分別如下。
import pandas as pd df = pd.read_excel('fruit.xlsx') print(df) print(df.values) print(df['名稱']) print(df.loc[1]) print(df.loc[2,'單價/元'])
①df = pd.read_excel('fruit.xlsx'),表示通過pandas讀取excel並加載為DataFrame,從圖2可以看出如果讀取時不設置索引,pandas會自動生成一列,該列值從0開始,表示行索引。
②圖2中紅框中的部分即為DataFrame的值,可通過df.values獲取,結果如圖3,類似列表的形式,數據類型為<class 'numpy.ndarray'>;
③圖2數據部分有三列,列的名字為第一行的內容,即列索引,可通過df[列名]獲取某一列的內容,結果如圖4所示;
④pandas自動生成的行索引從0開始,可通過pd.loc[n]獲取索引值為n的行的內容,結果如圖5所示;
⑤通過pd.loc[行索引,列索引]可獲取具體單元格的內容,結果如圖6所示。
可通過df.set_index(列名)自行設定索引,如下示例
import pandas as pd df = pd.read_excel('fruit.xlsx') #也可在讀取時直接設置index_col='名稱' df = df.set_index('名稱') #設置名稱列為行索引 print(df) print(df.values) print(df['庫存/kg']) print(df.loc['草莓']) print(df.loc['香蕉','單價/元'])
將DataFrame格式的數據寫入excel
第一步:writer = pd.ExcelWriter('文件路徑和名稱'),文件名稱必須指定,默認保存在當前文件的相同目錄,文件名稱需包含后綴名且只能為xls或xlsx
第二步:df.to_excel(writer,'sheet頁名稱'),sheet頁參數可不指定,默認為Sheet1
第三步:writer.save()