使用pandas進行excel文件的讀取寫入

pandas的DateFrame類似於excel的數據儲存結構,故爲了便於pandas進行數據處理,設計者提供了簡便的方法進行數據的讀取,下面寫上代碼

import pandas as pd
import numpy as np
def save_excel(arr, exc_filename=None):       #讀取excel的函數
    """Save the data in excel format"""
    if exc_filename == None:
        exc_filename = "excel.xlsx"
    arr_df = pd.DataFrame(arr)
    np_arr = np.array(arr)
    arr_r, arr_c = np_arr.shape
    arr_r_b = len(str(arr_r))                #行數的個數,3位數還是4位數
    arr_c_b = len(str(arr_c))
    list_index = []
    list_columns = []
    for ii in np.arange(arr_r):
        x_str = 'Y' + str(ii).zfill(arr_r_b)  # The number of digits is not enough to automatically zero                                      
        list_index.append(x_str)
    arr_df.index = list_index               #建立列索引

    for ii in np.arange(arr_c):
        y_str = 'X' + str(ii).zfill(arr_c_b)
        list_columns.append(y_str)
    arr_df.columns = list_columns            #建立行索引

    writer = pd.ExcelWriter(exc_filename)
    arr_df.to_excel(writer, 'page_1', float_format='%.8f')
    writer.save()


df = pd.read_excel(r"excel.xlsx",sheet_nam = 0,index_col = 0,head=0,nrows = 5)
#sheet_name: excel文件中的表名
#index_col: 使用哪一列作爲行索引,默認從0開始
#header: 哪一行設置爲列索引,默認是第一行,即header = 0
#usecols: 讀取表格中哪幾列,必須是位置索引
#date_parser:解析日期的函數
#parse_dates:嘗試將數據解析爲日期,默認爲False。如果爲True,則嘗試解析所有列。此外,還可以指定需要解析的一組列號或者列名
#names: 列索引
#engine: 默認是C,如文件路徑存在中文時,engine= "python"
#encoding: 默認是utf-8,還可以是gbk
#skiprows: 跳過前幾行讀取文件,默認從0開始
#nrows: 讀取多少行數據
#converters: 列名跟函數之間的映射關係組成的字典

下面是附加對csv文件的操作

def save_csv(arr,csv_filename=None):
    """save data in sv format"""
    if csv_filename == None:
        csv_filename = 'csv.csv'
    arr_df = pd.DataFrame(arr)
    arr_df.to_csv(csv_filename,float_format='%.3f',index=False,header =False)
df = pd.read_csv(r"D:\迅雷下載\示例txt.csv",encoding = "gbk",engine = "python",nrows= 5,index_col = "用戶id")

借鑑:python學習之路–pandas讀寫文件

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章