您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
# 实用的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']
})
# 读取时指定数据类型节省内存
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)
# 检测缺失值
df.isna().sum()
# 多种填充方式
df.fillna({
'age': df['age'].median(), # 中位数填充
'income': 'unknown' # 固定值填充
}, inplace=True)
# 删除缺失行(保留至少3个非空值的行)
df.dropna(thresh=3)
# 标记重复行(考虑全部列)
df.duplicated(keep='first')
# 按关键列去重
df.drop_duplicates(subset=['user_id', 'date'], keep='last')
# 自动转换最佳类型
df.convert_dtypes()
# 强制类型转换+错误处理
pd.to_numeric(df['price'], errors='coerce')
# 分类数据优化
df['category'] = df['category'].astype('category')
# 基础布尔索引
df[(df['age'] > 18) & (df['gender'] == 'F')]
# query方法(支持表达式)
df.query('18 < age < 30 and gender == "F"')
# isin高效筛选
df[df['product_id'].isin(popular_products)]
# 向量化字符串方法
df['name'].str.contains('张|李', regex=True)
df['email'].str.extract(r'([a-z]+)@')
# 正则表达式替换
df['address'].str.replace(r'\d+街道', 'XX路', regex=True)
# 行列转置
df.T
# 宽表变长表
pd.melt(df, id_vars=['date'], value_vars=['A', 'B'])
# 长表变宽表
df.pivot(index='date', columns='product', values='sales')
# 多级分组聚合
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)
# 不同连接方式对比
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)
# 自动识别日期格式
df['date'] = pd.to_datetime(df['date_str'], format='%Y-%m-%d')
# 时区处理
df['timestamp'].dt.tz_localize('UTC').dt.tz_convert('Asia/Shanghai')
# 按周统计销售额
df.set_index('datetime')['sales'].resample('W').sum()
# 滚动窗口计算
df['3day_avg'] = df['price'].rolling(window='3D').mean()
# 正确写法
df.loc[df['age'] > 30, 'group'] = 'senior'
# 错误写法(可能产生警告)
df[df['age'] > 30]['group'] = 'senior'
# 查看内存使用
df.memory_usage(deep=True)
# 优化数值类型
df['id'] = df['id'].astype('int32')
# 使用分类数据
df['city'] = df['city'].astype('category')
# 内置绘图(需matplotlib)
df.plot(kind='scatter', x='age', y='income')
# 箱线图分组显示
df.boxplot(column='score', by='class')
# 条件格式
def highlight_negative(val):
color = 'red' if val < 0 else 'black'
return f'color: {color}'
df.style.applymap(highlight_negative, subset=['profit'])
# 使用Dask处理超大数据
import dask.dataframe as dd
ddf = dd.from_pandas(df, npartitions=10)
result = ddf.groupby('category').size().compute()
# 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()
chunksize
参数分块读取del df_temp
# 使用line_profiler分析
%load_ext line_profiler
%lprun -f process_data process_data(df)
# 查看操作耗时
%timeit df.groupby('category').mean()
本文涵盖的20+个Pandas核心技巧包括: - 数据结构创建与优化 - 高效数据清洗方法 - 复杂查询与筛选 - 分组聚合的多种模式 - 时间序列专项处理 - 性能优化关键策略 - 实际业务场景应用
掌握这些技巧可解决90%的日常数据分析需求,建议配合实际数据练习巩固。更多高级功能可参考官方文档的Structured Data
和Time Series
专项章节。
“`
文章特点: 1. 代码示例占比40%,理论说明60% 2. 按数据处理流程组织内容 3. 包含实际业务场景案例 4. 重点标注性能优化方案 5. 使用最新Pandas 2.0+语法 6. 强调常见错误规避方法
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。