【python】【pandas】pandas使用筆記
數(shù)據(jù)交互或者叫文件io
python從excel文件讀取數(shù)據(jù)
import pandas as pd# 讀取excel文件,得到dataframe文件df = pd.read_excel(io, sheet_name, header, skiprows, index_col)# 常用參數(shù)# io: 文件路徑和名稱,例如 io=r'D:\file\data.xlsx',如果文件和腳本在同一路徑下,則不需要指定路徑,僅需要文件名# sheet_name: sheet表的名稱,默認(rèn)讀取第一個(gè)sheet# header: 指定作為列標(biāo)簽的行號,默認(rèn)第1行# skiprows: 需要跳過不讀取的行數(shù)據(jù)# index_col: 指定作為行標(biāo)簽的列號,如果不指定行標(biāo)簽?zāi)J(rèn)就是[0, 1, 2, ...]
python將數(shù)據(jù)寫入excel文件
# 將dataframe文件寫入excel文件df.to_excel(excel_writer)# excel_writer: 文件名
python從csv文件讀取數(shù)據(jù)
import pandas as pd df = pd.read_csv(filepath_or_buffer, header, skiprows, index_col, encoding)# 常用參數(shù)# filepath_or_buffer同pd.read_excel的io# header skiprows index_col 與 pd.read_excel 相同# encoding: 默認(rèn)'utf-8', 有中文時(shí)用'gbk'
python從mysql讀取數(shù)據(jù)
點(diǎn)擊這里了解pandas與mysql的連接和操作
從dataframe中獲取數(shù)據(jù)
最通用的是切片語法,分為按標(biāo)簽和按位置兩種
# 按標(biāo)簽,其中不能混入位置編號df.loc[[行標(biāo)簽序列], [列標(biāo)簽序列]] # 例如,序列可以是列表窮舉,也可以是范圍生成,當(dāng)然可以只取行,或者只取列df.loc['行名稱1':'行名稱2', ['列名稱1', '列名稱2']] df.loc[:, '列名稱1':'列名稱2'] ?# 只取列# 如果有行列標(biāo)簽沒有指定,其實(shí)此時(shí)默認(rèn)的行列標(biāo)簽0,1,2 作為str的時(shí)候就是標(biāo)簽,作為int的時(shí)候就是位置編號,例如df.loc['0':'2', '1':'3']# 按位置,其中不能混入標(biāo)簽df.iloc[[行編號序列], [列編號序列]]
簡化語法,獲取dataframe列數(shù)據(jù)
# 獲取單列數(shù)據(jù),得到series,一種降維操作,series的行標(biāo)簽是原dataframe的行標(biāo)簽df['列名稱']或者df.列名稱# 獲取單列數(shù)據(jù),得到dataframe,行列標(biāo)簽和原dataframe相同df[['列名稱']]
簡化語法,獲取dataframe行數(shù)據(jù)
# 通過行編號提取數(shù)據(jù),得到dataframe,例如提取0和1行df[0:2] # 注意,只提取0行是df[0:1]# 通過行名稱提取數(shù)據(jù),得到dataframedf['行名稱1':'行名稱2']# 只提取單行的話df['行名稱1':'行名稱1']
遍歷dataframe
# 遍歷行數(shù)據(jù)for index, row in df.iterrows(): ?# index是行編號,row就是行數(shù)據(jù),是一個(gè)series,標(biāo)簽就是df的列標(biāo)簽