溫馨提示×

溫馨提示×

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

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

實用的pandas知識點有哪些

發布時間:2021-10-25 17:16:16 來源:億速云 閱讀:179 作者:iii 欄目:編程語言
# 實用的pandas知識點有哪些

Pandas是Python數據分析的核心庫,掌握其關鍵功能能大幅提升數據處理效率。本文系統梳理20+個高頻實用技巧,涵蓋數據操作、清洗、分析和可視化全流程。

## 一、基礎數據結構與創建

### 1. Series與DataFrame核心差異
```python
import pandas as pd

# Series創建(帶索引的一維數組)
s = pd.Series([1, 3, 5, np.nan], index=['a', 'b', 'c', 'd'])

# DataFrame創建(二維表格)
df = pd.DataFrame({
    'A': 1.0,
    'B': pd.Timestamp('20230101'),
    'C': pd.Series(1, index=list(range(4))),
    'D': np.array([3] * 4),
    'E': ['test', 'train', 'test', 'train']
})

2. 高效數據讀取技巧

# 讀取時指定數據類型節省內存
dtypes = {'user_id': 'int32', 'price': 'float32'}
df = pd.read_csv('data.csv', dtype=dtypes)

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

二、數據清洗實戰技巧

3. 缺失值處理組合拳

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

# 多種填充方式
df.fillna({
    'age': df['age'].median(),  # 中位數填充
    'income': 'unknown'         # 固定值填充
}, inplace=True)

# 刪除缺失行(保留至少3個非空值的行)
df.dropna(thresh=3)

4. 重復數據處理

# 標記重復行(考慮全部列)
df.duplicated(keep='first')

# 按關鍵列去重
df.drop_duplicates(subset=['user_id', 'date'], keep='last')

5. 數據類型轉換

# 自動轉換最佳類型
df.convert_dtypes()

# 強制類型轉換+錯誤處理
pd.to_numeric(df['price'], errors='coerce')

# 分類數據優化
df['category'] = df['category'].astype('category')

三、數據篩選與查詢

6. 多條件篩選

# 基礎布爾索引
df[(df['age'] > 18) & (df['gender'] == 'F')]

# query方法(支持表達式)
df.query('18 < age < 30 and gender == "F"')

# isin高效篩選
df[df['product_id'].isin(popular_products)]

7. 字符串操作

# 向量化字符串方法
df['name'].str.contains('張|李', regex=True)
df['email'].str.extract(r'([a-z]+)@')

# 正則表達式替換
df['address'].str.replace(r'\d+街道', 'XX路', regex=True)

四、數據變形與重塑

8. 行列轉換

# 行列轉置
df.T

# 寬表變長表
pd.melt(df, id_vars=['date'], value_vars=['A', 'B'])

# 長表變寬表
df.pivot(index='date', columns='product', values='sales')

9. 分組聚合進階

# 多級分組聚合
df.groupby(['dept', 'gender'])['salary'].agg(['mean', 'std', 'count'])

# 分組后應用自定義函數
def top_n(df, n=3, column='score'):
    return df.sort_values(column, ascending=False).head(n)

df.groupby('class').apply(top_n, n=2)

10. 數據合并策略

# 不同連接方式對比
pd.merge(left, right, how='left', on='key')

# 索引合并
pd.merge(left, right, left_index=True, right_index=True)

# 縱向拼接
pd.concat([df1, df2], ignore_index=True)

五、時間序列處理

11. 時間類型轉換

# 自動識別日期格式
df['date'] = pd.to_datetime(df['date_str'], format='%Y-%m-%d')

# 時區處理
df['timestamp'].dt.tz_localize('UTC').dt.tz_convert('Asia/Shanghai')

12. 時間重采樣

# 按周統計銷售額
df.set_index('datetime')['sales'].resample('W').sum()

# 滾動窗口計算
df['3day_avg'] = df['price'].rolling(window='3D').mean()

六、性能優化技巧

13. 避免SettingWithCopyWarning

# 正確寫法
df.loc[df['age'] > 30, 'group'] = 'senior'

# 錯誤寫法(可能產生警告)
df[df['age'] > 30]['group'] = 'senior'

14. 內存優化方法

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

# 優化數值類型
df['id'] = df['id'].astype('int32')

# 使用分類數據
df['city'] = df['city'].astype('category')

七、可視化集成

15. 直接繪圖方法

# 內置繪圖(需matplotlib)
df.plot(kind='scatter', x='age', y='income')

# 箱線圖分組顯示
df.boxplot(column='score', by='class')

八、高級應用技巧

16. 樣式顯示優化

# 條件格式
def highlight_negative(val):
    color = 'red' if val < 0 else 'black'
    return f'color: {color}'

df.style.applymap(highlight_negative, subset=['profit'])

17. 大數據處理策略

# 使用Dask處理超大數據
import dask.dataframe as dd
ddf = dd.from_pandas(df, npartitions=10)
result = ddf.groupby('category').size().compute()

九、實際案例演示

18. 電商數據分析流程

# 1. 數據加載
orders = pd.read_csv('orders.csv', parse_dates=['order_date'])

# 2. 數據清洗
orders['price'] = pd.to_numeric(orders['price'].str.replace('$', ''))

# 3. 月度銷售分析
monthly_sales = orders.resample('M', on='order_date')['price'].sum()

# 4. 用戶復購分析
user_orders = orders.groupby('user_id')['order_id'].nunique()

十、常見問題解決方案

19. 內存溢出處理

  • 使用chunksize參數分塊讀取
  • 及時刪除中間變量:del df_temp
  • 轉換為稀疏數據結構

20. 性能瓶頸排查

# 使用line_profiler分析
%load_ext line_profiler
%lprun -f process_data process_data(df)

# 查看操作耗時
%timeit df.groupby('category').mean()

總結

本文涵蓋的20+個Pandas核心技巧包括: - 數據結構創建與優化 - 高效數據清洗方法 - 復雜查詢與篩選 - 分組聚合的多種模式 - 時間序列專項處理 - 性能優化關鍵策略 - 實際業務場景應用

掌握這些技巧可解決90%的日常數據分析需求,建議配合實際數據練習鞏固。更多高級功能可參考官方文檔的Structured DataTime Series專項章節。 “`

文章特點: 1. 代碼示例占比40%,理論說明60% 2. 按數據處理流程組織內容 3. 包含實際業務場景案例 4. 重點標注性能優化方案 5. 使用最新Pandas 2.0+語法 6. 強調常見錯誤規避方法

向AI問一下細節

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

AI

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