溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Pandas的功能及用法

發布時間:2021-08-23 02:59:32 來源:億速云 閱讀:455 作者:chen 欄目:大數據
# Pandas的功能及用法

## 一、Pandas概述

### 1.1 什么是Pandas
Pandas是一個開源的Python數據分析庫,提供了高性能、易用的數據結構和數據分析工具。名稱"Pandas"源自"Panel Data"(面板數據)和"Python Data Analysis"(Python數據分析)的組合。由Wes McKinney于2008年開發,現已成為Python數據科學生態系統的核心組件。

### 1.2 主要特點
- **DataFrame結構**:類似電子表格的二維數據結構
- **時間序列處理**:強大的日期/時間功能
- **數據清洗**:處理缺失值、異常值等
- **數據整合**:合并、連接、重塑數據集
- **高效I/O**:支持多種文件格式讀寫
- **分組聚合**:靈活的數據分組和聚合操作

### 1.3 安裝與導入
```python
# 安裝
pip install pandas

# 常規導入方式
import pandas as pd

二、核心數據結構

2.1 Series

一維帶標簽數組,可存儲任何數據類型

# 創建Series
s = pd.Series([1, 3, 5, np.nan, 6, 8])

# 基本操作
print(s.index)  # 獲取索引
print(s.values) # 獲取值
print(s[2])     # 索引訪問

2.2 DataFrame

二維表格型數據結構,類似電子表格或SQL表

# 創建DataFrame
data = {'Name': ['Alice', 'Bob', 'Charlie'],
        'Age': [25, 30, 35],
        'City': ['NY', 'LA', 'Chicago']}
df = pd.DataFrame(data)

# 查看基本信息
print(df.shape)    # 維度
print(df.columns)  # 列名
print(df.dtypes)   # 數據類型

三、數據讀取與寫入

3.1 常見數據源支持

格式類型 讀取方法 寫入方法
CSV pd.read_csv() df.to_csv()
Excel pd.read_excel() df.to_excel()
JSON pd.read_json() df.to_json()
SQL pd.read_sql() df.to_sql()
HTML pd.read_html() df.to_html()

3.2 示例代碼

# 讀取CSV
df = pd.read_csv('data.csv', encoding='utf-8')

# 讀取Excel
df = pd.read_excel('data.xlsx', sheet_name='Sheet1')

# 寫入文件
df.to_csv('output.csv', index=False)

四、數據查看與選擇

4.1 數據查看方法

df.head()      # 前5行
df.tail(3)     # 后3行
df.sample(5)   # 隨機5行
df.describe()  # 統計摘要
df.info()      # 內存和類型信息

4.2 數據選擇方法

按標簽選擇

df.loc[0]             # 選擇第一行
df.loc[:, 'Name']     # 選擇Name列
df.loc[0:2, 'Name':'Age']  # 行和列切片

按位置選擇

df.iloc[0]        # 第一行
df.iloc[:, 1]     # 第二列
df.iloc[0:2, 1:3] # 行列切片

布爾索引

df[df['Age'] > 30]              # 年齡大于30
df[(df.Age > 25) & (df.City == 'NY')]  # 多條件

五、數據清洗與預處理

5.1 處理缺失值

# 檢測缺失值
df.isnull().sum()

# 處理方法
df.dropna()          # 刪除含缺失值的行
df.fillna(0)         # 用0填充
df.fillna(df.mean()) # 用均值填充

5.2 類型轉換

df['Age'] = df['Age'].astype('float')  # 轉為浮點型
pd.to_datetime(df['Date'])             # 轉為日期類型

5.3 重復值處理

df.duplicated()      # 檢測重復行
df.drop_duplicates() # 刪除重復行

5.4 數據替換

df.replace({'NY': 'New York'}, inplace=True)  # 值替換
df['Gender'].map({'M': 'Male', 'F': 'Female'}) # 映射替換

六、數據變形與操作

6.1 排序

df.sort_values('Age', ascending=False)  # 按年齡降序
df.sort_index(ascending=True)           # 按索引排序

6.2 添加/刪除列

df['NewCol'] = df['Age'] * 2       # 添加新列
df.drop('NewCol', axis=1)          # 刪除列

6.3 數據透視

# 簡單透視表
pd.pivot_table(df, values='Age', index='City', aggfunc='mean')

# 復雜透視表
pd.pivot_table(df, values=['Age','Salary'], 
               index=['City','Gender'],
               aggfunc={'Age':'mean', 'Salary':'sum'})

6.4 數據合并

# 縱向合并
pd.concat([df1, df2], axis=0)

# 橫向合并
pd.concat([df1, df2], axis=1)

# SQL風格合并
pd.merge(left, right, on='key', how='inner')

七、分組與聚合

7.1 基本分組操作

grouped = df.groupby('City')  # 按城市分組
grouped.groups                # 查看分組

7.2 聚合函數

# 單列聚合
df.groupby('City')['Age'].mean()

# 多列多聚合
df.groupby('City').agg({
    'Age': ['mean', 'max', 'min'],
    'Salary': 'sum'
})

7.3 轉換與過濾

# 分組標準化
df['zscore'] = df.groupby('City')['Age'].transform(
    lambda x: (x - x.mean()) / x.std()
)

# 分組過濾
df.groupby('City').filter(lambda x: x['Age'].mean() > 30)

八、時間序列處理

8.1 時間類型創建

# 創建時間序列
dates = pd.date_range('20230101', periods=6)
ts = pd.Series(np.random.randn(6), index=dates)

8.2 時間索引操作

ts['2023-01']       # 選擇1月數據
ts.truncate(before='2023-01-03')  # 截斷數據
ts.resample('M').mean()  # 按月重采樣

8.3 時間偏移

ts.shift(2)         # 向后移動2天
ts.tshift(freq='M') # 移動索引

九、性能優化技巧

9.1 向量化操作

避免循環,使用內置方法:

# 差的方式
for i in range(len(df)):
    df.loc[i, 'NewCol'] = df.loc[i, 'Age'] * 2
    
# 好的方式
df['NewCol'] = df['Age'] * 2

9.2 使用合適的數據類型

# 查看內存使用
df.memory_usage(deep=True)

# 優化類型
df['Category'] = df['Category'].astype('category')

9.3 分塊處理大數據

# 分塊讀取
chunk_iter = pd.read_csv('large.csv', chunksize=10000)
for chunk in chunk_iter:
    process(chunk)

十、可視化集成

10.1 基本繪圖

df.plot()                  # 線圖
df.plot.scatter(x='Age', y='Salary')  # 散點圖
df['Age'].plot.hist(bins=20)  # 直方圖

10.2 高級可視化

# 使用Seaborn集成
import seaborn as sns
sns.boxplot(x='City', y='Age', data=df)

# 多子圖
df.plot(subplots=True, figsize=(10, 12))

十一、實際應用案例

11.1 銷售數據分析

# 讀取數據
sales = pd.read_excel('sales_data.xlsx')

# 分析月銷售額
sales['Date'] = pd.to_datetime(sales['Date'])
monthly_sales = sales.resample('M', on='Date')['Amount'].sum()

# 可視化
monthly_sales.plot(kind='bar')

11.2 用戶行為分析

# 計算用戶留存
user_activity['date'] = pd.to_datetime(user_activity['timestamp']).dt.date
retention = user_activity.groupby('user_id')['date'].nunique()

# 留存率統計
(retention > 1).mean()  # 7日留存率

十二、常見問題與解決方案

12.1 性能問題

  • 問題:處理大數據時速度慢
  • 解決方案
    • 使用dtype參數指定類型
    • 考慮使用Dask或Modin等擴展庫

12.2 內存問題

  • 問題:內存不足
  • 解決方案
    • 使用category類型減少字符串存儲
    • 分塊處理數據

12.3 編碼問題

  • 問題:讀取文件時編碼錯誤
  • 解決方案
    • 嘗試不同編碼:’utf-8’, ‘gbk’, ‘latin1’
    • 使用chardet檢測文件編碼

十三、總結與資源推薦

13.1 Pandas優勢總結

  1. 豐富的數據結構
  2. 強大的數據處理能力
  3. 優秀的性能表現
  4. 廣泛的社區支持
  5. 與其他庫的良好集成

13.2 學習資源推薦

13.3 未來發展

Pandas持續更新中,2.0版本帶來了更好的性能、更豐富的類型系統等改進。建議關注: - 性能優化(特別是大數據處理) - 與其他生態系統的集成 - 新功能的持續加入


本文共約4300字,全面介紹了Pandas的核心功能和使用方法,從基礎數據結構到高級分析技巧,涵蓋了數據處理的完整流程。通過實際代碼示例展示了Pandas的強大功能,是Python數據分析的必備工具。 “`

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女