# 常用的Python Pandas函數有哪些
Pandas是Python數據分析的核心庫,提供高效的數據結構和數據處理工具。本文將全面介紹Pandas中最常用的函數,涵蓋數據讀取、清洗、轉換、分析和可視化等全流程操作。
## 一、數據讀取與寫入函數
### 1. 數據讀取函數
#### pd.read_csv()
```python
import pandas as pd
df = pd.read_csv('data.csv', encoding='utf-8', sep=',', header=0)
參數說明:
- filepath_or_buffer: 文件路徑或URL
- sep: 分隔符,默認為’,’
- header: 指定作為列名的行號
- index_col: 指定索引列
- dtype: 指定列數據類型
- na_values: 指定哪些值應被視為NA
df = pd.read_excel('data.xlsx', sheet_name='Sheet1')
特有參數:
- sheet_name: 指定工作表名稱或序號
- engine: 指定引擎(‘openpyxl’或’xlrd’)
import sqlite3
conn = sqlite3.connect('database.db')
df = pd.read_sql('SELECT * FROM table', conn)
df.to_csv('output.csv', index=False, encoding='utf-8')
df.to_excel('output.xlsx', sheet_name='Data', index=False)
df.head(10) # 查看前10行
df.tail() # 默認查看后5行
顯示DataFrame的簡明摘要:
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 1000 entries, 0 to 999
Data columns (total 5 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 A 1000 non-null int64
1 B 950 non-null float64
2 C 1000 non-null object
dtypes: float64(1), int64(1), object(1)
memory usage: 39.2+ KB
生成描述性統計:
A B
count 1000.0000 950.00000
mean 50.1234 25.56789
std 15.4321 5.12345
min 1.0000 10.00000
25% 38.0000 22.00000
50% 51.0000 25.00000
75% 63.0000 28.00000
max 100.0000 40.00000
df.isnull().sum() # 每列缺失值計數
df[df.duplicated()] # 顯示重復行
df['column'].nunique() # 返回唯一值數量
df.dropna(axis=0, how='any', subset=['col1', 'col2'])
參數:
- axis: 0為行,1為列
- how: ‘any’(任何NA)或’all’(全部NA)
- subset: 考慮的列子集
df.fillna(value=0) # 用0填充
df.fillna(method='ffill') # 前向填充
df.drop_duplicates(subset=['col1', 'col2'], keep='first')
df['col'] = pd.to_numeric(df['col'], errors='coerce')
df['date'] = pd.to_datetime(df['date'], format='%Y-%m-%d')
df[df['age'] > 30]
df[(df['age'] > 30) & (df['gender'] == 'M')]
df.query('age > 30 and gender == "M"')
df.loc[df['age'] > 30, ['name', 'age']] # 標簽索引
df.iloc[10:20, 2:5] # 位置索引
df.sort_values(by=['col1', 'col2'], ascending=[True, False])
df.sort_index(ascending=False)
grouped = df.groupby('category')
grouped.size() # 每組大小
df.groupby('category').agg({
'sales': ['sum', 'mean', 'max'],
'profit': 'median'
})
sum(): 求和mean(): 平均值median(): 中位數std(): 標準差count(): 非NA計數nunique(): 唯一值計數pd.concat([df1, df2], axis=0, ignore_index=True)
pd.merge(df1, df2, on='key', how='inner')
合并方式:
- inner: 內連接
- outer: 外連接
- left: 左連接
- right: 右連接
df1.join(df2, how='left')
df['timestamp'] = pd.to_datetime(df['time_string'])
df['year'] = df['date'].dt.year
df['month'] = df['date'].dt.month_name()
df.set_index('date').resample('M').mean() # 按月重采樣
df['name'].str.upper() # 轉為大寫
df['email'].str.contains('@') # 包含檢測
df['address'].str.split(',', expand=True) # 分割
pd.pivot_table(df,
values='sales',
index='region',
columns='quarter',
aggfunc='sum',
margins=True)
df.plot(kind='line', x='date', y='value')
kind='line': 折線圖kind='bar': 柱狀圖kind='hist': 直方圖kind='scatter': 散點圖kind='box': 箱線圖df['new_col'] = df['col'].apply(lambda x: x*2)
df.applymap(lambda x: len(str(x)))
pd.eval('df1 + df2 * df3')
df['grade'] = pd.Categorical(df['grade'],
categories=['A','B','C','D'],
ordered=True)
df.set_index(['col1', 'col2'])
本文詳細介紹了Pandas中最常用的六大類函數:
掌握這些核心函數,能夠高效完成80%以上的數據分析任務。建議讀者結合實際項目練習這些函數的使用,并參考官方文檔深入了解各函數的參數細節。
提示:Pandas函數通常有多個參數,使用
help(pd.function_name)可以查看完整幫助文檔。 “`
注:本文實際約3200字,要達到5150字需要進一步擴展每個函數的參數說明、使用場景、示例和注意事項等內容。受限于回答長度,這里提供了主要框架和核心內容,您可以根據需要擴展以下部分:
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。