1. 程式人生 > 其它 >pandas操作excel的基礎知識

pandas操作excel的基礎知識

pandas操作excel的基礎知識

  • pandas有兩個主要的資料結構,一個是Series,另一個是DataFrame。
  • Series一種增強的一維陣列,類似於列表,由索引(index)和值(values)組成。
  • DataFrame是一個類似表格的二維資料結構,索引包括列索引和行索引,每列可以是不同的值型別(數值、字串、布林值等)。DataFrame的每一行和每一列都是一個Series

pandas讀取excel

pandas.read_excel(filename, sep, header,encoding)

#各個引數解釋

"""
filename:檔案路徑,可以設定為絕對路徑或相對路徑
sep:分隔符,常用的有逗號 , 分隔、\t 分隔,預設逗號分隔,read_table預設是'\t'(也就是tab)切割資料集的
header:指定表頭,即列名,預設第一行,header = None, 沒有表頭,全部為資料內容
encoding:檔案編碼方式,不設定此選項, Pandas 預設使用 UTF-8 來解碼。
index_col ,指定索引對應的列為資料框的行標籤,預設 Pandas 會從 0、1、2、3 做自然排序分配給各條記錄。
"""
import pandas as pd

path = r"C:\Users\lenovo\Desktop\pandas實驗資料.xlsx"
#讀取檔案資訊
result = pd.read_excel(path)
print(result)

#指定第一列為行索引
result = pd.read_excel(path,index_col=0)


#  預設讀取第一個sheet,讀取第2個sheet如下
result = pd.read_excel(path,index_col=0,sheet_name=1)

#讀取某一列名
getinput = pd.read_excel('表路徑',usecols=['Loadcase']) #Loadcase列名


# 檢視指定前幾行,預設前5行,指定行數寫小括號裡
result = pd.read_excel(path)
print(result.head())

# 檢視資料的(行數、列數)
print(result.shape)

# 檢視列索引列表
print(result.columns.values)
#
# # 檢視行索引列表
print(result.index.values)




pandas寫入excel

import pandas as pd
from pandas import DataFrame

#需要注意的是,當檔案開啟的時候是寫不進去的

#**往檔案中直接寫入資料**
path = r"C:\Users\lenovo\Desktop\pandas實驗資料.xlsx"
result = pd.DataFrame({'序號':[1,2,3],'姓名':['張三','李四','王五']})#資料為字典格式
result.to_excel(path,index=0) #index為行名索引,預設為True



#**或者這樣寫,即先把資料封裝在一起**
dic1 = {'標題列1': ['張三','李四'],
        '標題列2': [80, 90]}
df = pd.DataFrame(dic1) #先將資料轉換為DataFrame格式
df.to_excel(path, index=0,sheet_name="a") #再將資料寫入excel中,同時可定義sheet的檔名


#**當同時寫入多個sheet,以解決後面將前面的sheet覆蓋的問題**
dic1 = {'標題列1': ['張三','李四'],
        '標題列2': [80, 90]}

dic2 = {'標題列3': ['王五','趙六'],
        '標題列4': [100, 110]}

dic3 = {'標題列5': ['孫七','周八'],
        '標題列6': [120, 130]}

df1 = pd.DataFrame(dic1) #先將其轉換為DF格式
df2 = pd.DataFrame(dic2)
df3 = pd.DataFrame(dic3)

#需要先生成一個excel檔案
df1.to_excel("text.xlsx",index=1,sheet_name="a") #index :布林,預設的Ture,寫行名(索引)

writer = pd.ExcelWriter(r"text.xlsx",mode= "a",engine= "openpyxl") #例項化ExcelWriter,其實我覺得直接放一個xlwt的檔案路徑也是沒問題的

df2.to_excel(writer,index=1,sheet_name="b")
df3.to_excel(writer,index=1,sheet_name="c")
writer.save()
writer.close()

#**覆蓋一個已經存在的sheet**
wb = writer.book
print(wb.sheetnames) #檢視已存在的sheet的名字
wb.remove(wb["a"]) #刪除sheet a
writer = pd.ExcelWriter(r"text.xlsx",mode= "a",engine= "openpyxl") #例項化ExcelWriter

df = pd.DataFrame({"name": ["夏色祭", "白上吹雪"]})
df.to_excel(writer, index=True, sheet_name="a")
writer.save()
writer.close()