Python中Pandas庫常用函數用法記錄一
Pandas是Python中用於數據分析和操作的強大庫。它提供了豐富的函數來處理和分析數據。作為不是專業的程序員在日常工作中用來處理一些excel文檔,將一部分的效率提高了不少, 後來又結合streamlit庫,發現更可以提升速度,因為不需要每次重複啟動python環境,或者jupyterLAB,只要上傳要處理的文檔就可以了,不過本文將先介紹Pandas中幾個常用的函數,後續也會介紹和分享自己使用streamlit的列子。
1. read_csv()
read_csv()
函數用於從CSV文件中讀取數據並創建一個DataFrame對象pandas.read_csv(filepath_or_buffer, sep=',', delimiter=None, header='infer', names=None, index_col=None, usecols=None, dtype=None, skiprows=None, nrows=None, ...)
參數:
filepath_or_buffer
: 文件路徑或對象。sep
: 分隔符,默認為逗號。header
: 指定作為列名的行,默認為'infer'。names
: 列名列表,用於替換原有列名。index_col
: 用作行索引的列編號或名稱。usecols
: 返回一個數據子集要求的列名稱或編號。dtype
: 指定各列的數據類型。skiprows
: 需要忽略的行數(從文件開始算起)或需要跳過的行號列表(從0開始)。nrows
: 需要讀取的行數(從文件開始算起)。示例:
import pandas as pd df = pd.read_csv('data.csv') print(df.head())
2.to_csv()
to_csv()
函數用於將DataFrame對象寫入CSV文件。DataFrame.to_csv(path_or_buf=None, sep=',', columns=None, index=True, header=True, mode='w', encoding=None, ...)
參數:
path_or_buf
: 文件路徑或對象,如果為None則輸出到字符串。sep
: 字段分隔符,默認為逗號。columns
: 要寫入的列名列表。index
: 是否寫行(索引)名稱。默認為True。header
: 是否寫列(字段名稱)名稱。默認為True。mode
: 字符串,指定文件打開模式('w' 或 'a')。encoding
: 字符串,指定字符編碼格式。示例:
df.to_csv('output.csv', index=False)
3.merge()
merge()
函數用於根據一個或多個鍵將兩個DataFrame對象進行合並。pandas.merge(left, right, how='inner', on=None, left_on=None, right_on=None, left_index=False, right_index=False, sort=False, suffixes=('_x', '_y'), copy=True, ...)
參數:
left
,right
: 要合並的DataFrame對象。how
: 合並類型('left', 'right', 'outer', 'inner')。on
: 要加入的列名。名稱必須在左右DataFrame對象中都存在。left_on
,right_on
: 左、右DataFrame對象中的列或索引級別名稱用作鍵。left_index
,right_index
: 如果為True,則使用左、右DataFrame對象的索引(行標籤)作為其合並鍵。suffixes
: 用於追加到重疊列名末尾的字符串元組。默認為('_x', '_y')。示例:
left = pd.DataFrame({'key': ['K0', 'K1', 'K2', 'K3'], 'A': ['A0', 'A1', 'A2', 'A3']}) right = pd.DataFrame({'key': ['K0', 'K1', 'K2', 'K3'], 'B': ['B0', 'B1', 'B2', 'B3']}) result = pd.merge(left, right, on='key') print(result)
3.groupby()
groupby()
函數用於將數據進行分組並對每個組應用聚合函數。DataFrame.groupby(by=None, axis=0, level=None, as_index=True, sort=True, group_keys=True, squeeze=False, ...)
參數:
by
: 用於分組的列名或索引名的列表或數組。axis
: 分組的軸,默認為0(沿行的方向)。level
: 如果軸是MultiIndex(層次化索引),則根據級別名稱或編號進行分組。as_index
: 默認為True,表示將分組鍵作為結果DataFrame的索引。設置為False可以將分組鍵作為普通列。sort
: 是否對分組鍵進行排序。默認為True。示例:
df = pd.DataFrame({ 'A': ['foo', 'bar', 'foo', 'bar', 'foo', 'bar', 'foo', 'foo'], 'B': ['one', 'one', 'two', 'three', 'two', 'two', 'one', 'three'], 'C': np.random.randn(8), 'D': np.random.randn(8) }) grouped = df.groupby(['A', 'B']).sum() print(grouped)
5.apply()
apply()
函數用於將一個函數應用於DataFrame的行或列。DataFrame.apply(func, axis='columns', raw=False, result_type='expand', args=(), **kwds)
參數:
func
: 要應用的函數。axis
: 應用的軸:0或'index'用於按行應用,1或'columns'用於按列應用。raw
: 是否將行或列作為Series(默認)或ndarray對象傳遞給函數。result_type
: {'expand', 'reduce', 'broadcast'}, 默認為'expand'。這對控制apply的輸出形狀很重要。args
,**kwds
: 傳遞給函數的其他位置參數和關鍵字參數。示例:
def sum_func(x): return x.sum() result = df.apply(sum_func, axis=1) print(result)
6.pivot_table()
透视表是一种可以对数据动态排布并且分类汇总的表格格式。或许大多数人都在Excel使用过数据透视表,也体会到它的强大功能,而在pandas中它被称作pivot_table。
pivot_table(data, values=None, index=None, columns=None,aggfunc='mean', fill_value=None, margins=False, dropna=True, margins_name='All')
參數:
index:层次字段,要通过透视表获取什么信息就按照相应的顺序设置字段
values:对需要的计算数据进行筛选
columns:设置列层次字段,它不是一个必要参数,作为一种分割数据的可选方式
aggfunc:可以设置我们对数据聚合时进行的函数操作
#fill_value填充空值,margins=True进行汇总
未完待續。。。。。。