Python數據分析Pandas全攻略
更新時間:2025年08月01日 14:01:34 作者:晨曦543210
在Python中,Pandas是一個非常強大的數據處理和分析庫,廣泛應用于數據科學和數據分析領域,接下來通過本文介紹Python數據分析Pandas全攻略包括安裝與導入示例,感興趣的朋友跟隨小編一起看看吧
一、簡介
Python 的 pandas 庫是數據分析的核心工具,專門處理結構化數據(如表格、時間序列等)。
二、安裝與導入
1. 安裝
pip install pandas
2. 導入
import pandas as pd # 行業(yè)標準縮寫
三、核心數據結構
1.Series- 一維帶標簽
# 創(chuàng)建 Series s = pd.Series([10, 20, 30, 40], index=['a', 'b', 'c', 'd']) print(s)
a 10 b 20 c 30 d 40 dtype: int64
2.DataFrame- 二維表格(核心)
# 創(chuàng)建 DataFrame
data = {
'Name': ['Alice', 'Bob', 'Charlie'],
'Age': [25, 30, 35],
'City': ['New York', 'Paris', 'London']
}
df = pd.DataFrame(data)
print(df)Name Age City 0 Alice 25 New York 1 Bob 30 Paris 2 Charlie 35 London
四、數據讀寫
1. 讀取數據(支持多種格式)
# 讀取 CSV
df = pd.read_csv('data.csv', encoding='utf-8')
# 讀取 Excel
df = pd.read_excel('data.xlsx', sheet_name='Sheet1')
# 讀取 JSON(與之前學習的 json 庫結合)
df = pd.read_json('data.json')2. 保存數據
# 保存為 CSV
df.to_csv('output.csv', index=False) # 不保存行索引
# 保存為 Excel
df.to_excel('output.xlsx', sheet_name='Results')五、數據探索
1. 查看數據
| 方法 | 作用 | 示例 |
|---|---|---|
df.head(n) | 查看前n行 | df.head(3) |
df.tail(n) | 查看后n行 | df.tail(2) |
df.info() | 顯示數據概覽 | df.info() |
df.describe() | 統(tǒng)計數值列 | df.describe() |
2. 選擇數據
# 選擇列 ages = df['Age'] # 返回 Series name_city = df[['Name', 'City']] # 返回 DataFrame # 選擇行 row_1 = df.iloc[0] # 通過位置選擇 row_bob = df.loc[df['Name'] == 'Bob'] # 通過條件選擇 # 切片 subset = df[1:3] # 第2-3行(左閉右開)
六、數據清洗
1. 處理缺失值
# 檢測缺失值
print(df.isnull())
# 刪除含缺失值的行
df_clean = df.dropna()
# 填充缺失值
df_filled = df.fillna({'Age': df['Age'].mean()}) # 用平均值填充年齡列2. 去重
df_unique = df.drop_duplicates(subset=['Name']) # 根據姓名去重
3. 類型轉換
df['Age'] = df['Age'].astype(float) # 轉換為浮點型
七、數據分析
1. 過濾數據
# 篩選年齡 > 25 的記錄 adults = df[df['Age'] > 25] # 復合條件(注意用 & 代替 and) young_in_paris = df[(df['Age'] < 30) & (df['City'] == 'Paris')]
2. 分組聚合
# 按城市分組,計算平均年齡
city_stats = df.groupby('City')['Age'].mean()
print(city_stats)City London 35.0 New York 25.0 Paris 30.0 Name: Age, dtype: float64
3. 排序
df_sorted = df.sort_values(by='Age', ascending=False) # 按年齡降序
八、數據合并
1. 橫向合并(類似 SQL JOIN)
df1 = pd.DataFrame({'ID': [1, 2], 'Name': ['A', 'B']})
df2 = pd.DataFrame({'ID': [2, 3], 'Age': [25, 30]})
# 內連接
merged = pd.merge(df1, df2, on='ID', how='inner')2. 縱向合并(類似 SQL UNION)
combined = pd.concat([df1, df2], axis=0) # axis=0 表示行方向
九、時間序列處理
# 創(chuàng)建時間序列
date_rng = pd.date_range(start='2023-01-01', end='2023-01-05', freq='D')
ts = pd.Series([10, 20, 15, 30, 25], index=date_rng)
# 重采樣(按周計算平均值)
weekly_avg = ts.resample('W').mean()十、可視化(需安裝 matplotlib)
import matplotlib.pyplot as plt
# 繪制年齡分布直方圖
df['Age'].plot(kind='hist', bins=5)
plt.title('Age Distribution')
plt.show()十一、常見錯誤處理
1.KeyError
# 檢查列名是否存在
if 'Salary' in df.columns:
print(df['Salary'])2. 內存不足
使用
df.info(memory_usage='deep')查看內存占用用
df.select_dtypes(include='number')選擇數值列處理
十二、完整工作流示例
# 1. 讀取數據
df = pd.read_csv('sales.csv')
# 2. 數據清洗
df = df.dropna(subset=['Price'])
df['Date'] = pd.to_datetime(df['Date'])
# 3. 分析
monthly_sales = df.groupby(pd.Grouper(key='Date', freq='M'))['Price'].sum()
# 4. 可視化
monthly_sales.plot(kind='bar')
plt.title('Monthly Sales')
plt.show()十三、常用函數
1、數據讀取與保存
| 函數 | 作用 | 示例 |
|---|---|---|
pd.read_csv() | 讀取 CSV 文件 | df = pd.read_csv('data.csv') |
pd.read_excel() | 讀取 Excel 文件 | df = pd.read_excel('data.xlsx') |
pd.read_json() | 讀取 JSON 文件 | df = pd.read_json('data.json') |
df.to_csv() | 保存為 CSV | df.to_csv('output.csv', index=False) |
df.to_excel() | 保存為 Excel | df.to_excel('output.xlsx') |
2、數據查看與篩選
| 函數/方法 | 作用 | 示例 |
|---|---|---|
df.head(n) | 查看前 n 行 | df.head(5) |
df.tail(n) | 查看后 n 行 | df.tail(3) |
df.info() | 顯示數據信息(列名、類型、非空值) | df.info() |
df.describe() | 統(tǒng)計數值列的基本統(tǒng)計量 | df.describe() |
df.shape | 獲取 DataFrame 的維度 | print(df.shape) → 輸出 (行數, 列數) |
df.columns | 獲取所有列名 | df.columns.tolist() |
df.loc[] | 標簽索引選擇數據 | df.loc[2, 'Age'] → 選擇第3行的Age列 |
df.iloc[] | 位置索引選擇數據 | df.iloc[0:3, 1:4] → 選擇前3行,第2-4列 |
df.query() | 用表達式篩選數據 | df.query('Age > 30 & City == "London"') |
3、數據清洗
| 函數/方法 | 作用 | 示例 |
|---|---|---|
df.dropna() | 刪除缺失值 | df.dropna(subset=['Age']) |
df.fillna() | 填充缺失值 | df.fillna({'Age': df['Age'].mean()}) |
df.drop_duplicates() | 刪除重復行 | df.drop_duplicates(subset=['Name']) |
df.rename() | 重命名列 | df.rename(columns={'old':'new'}) |
df.astype() | 轉換數據類型 | df['Age'] = df['Age'].astype(int) |
df.replace() | 替換特定值 | df.replace({'Male':'M', 'Female':'F'}) |
4、數據分析
| 函數/方法 | 作用 | 示例 |
|---|---|---|
df.groupby() | 分組聚合 | df.groupby('City')['Sales'].sum() |
df.pivot_table() | 創(chuàng)建數據透視表 | pd.pivot_table(df, values='Sales', index='Region', columns='Year') |
df.sort_values() | 按值排序 | df.sort_values('Age', ascending=False) |
df.value_counts() | 統(tǒng)計唯一值頻次 | df['City'].value_counts() |
df.corr() | 計算列之間的相關系數 | df.corr() |
df.merge() | 合并兩個 DataFrame | pd.merge(df1, df2, on='ID') |
pd.concat() | 拼接 DataFrame | pd.concat([df1, df2], axis=0) |
5、數據操作
| 函數/方法 | 作用 | 示例 |
|---|---|---|
df.apply() | 對列/行應用函數 | df['Age'].apply(lambda x: x + 1) |
df.map() | 對 Series 元素映射轉換 | df['Gender'].map({'M':1, 'F':0}) |
df.assign() | 創(chuàng)建新列 | df.assign(Income = df['Salary']*12) |
df.drop() | 刪除列或行 | df.drop(columns=['Temp']) |
df.where() | 條件篩選(保留滿足條件的值) | df.where(df['Age'] > 18) |
df.melt() | 寬表轉長表 | df.melt(id_vars=['Name']) |
到此這篇關于Python數據分析Pandas全攻略的文章就介紹到這了,更多相關Python Pandas安裝導入內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Linux下使用python腳本執(zhí)行BCP導入導出方式
這篇文章主要介紹了Linux下使用python腳本執(zhí)行BCP導入導出方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-01-01
Windows環(huán)境打包python工程為可執(zhí)行程序的詳細過程
我的開發(fā)環(huán)境是windows7,然后系統(tǒng)是64位,安裝的python和wxpython都是32位的,本文記錄我怎樣用pyinstaller打包我用python開發(fā)的工程,在網上搜索了很多資源,基本上都是不全的,所以我在這兒記錄一下這個比較完整的過程,一起看看吧2024-01-01

