Pandas高阶用法:数据清洗与高效分析全攻略

京东商品信息采集全攻略:Playwright爬虫与Pandas数据清洗深度实战 通过本文,我们了解了如何利用Playwright进行京东商品信息的采集,结合Pandas进行数据清洗与分析。整个流程包括从抓取数据、数据清洗到存储和可视化分析,全面展示了如何通过Python爬虫技术获取电商平台的有价值数据。未来,我们可以基于此数据进行更深入的分析,比如通过商品的价格、销量和评论数预测商品的销售趋势,或是通过聚类分析发现潜在的市场机会。通过这个技术方案,电商数据分析师可以大大提高工作效率,为电商决策提供有力的支持。 阅读详情

包含编程籽料、学习路线图、爬虫代码、安装包等!【点击领取】

前言
在数据科学和数据分析领域,Pandas无疑是Python生态中最强大的数据处理库之一。然而,很多开发者仅停留在基础的read_csv和groupby操作上,未能充分发挥Pandas的真正威力。本文将深入探讨Pandas的高阶用法,聚焦数据清洗和高效分析两大核心场景,带你解锁Pandas的进阶技能!

一、高效数据读取与初步探索
1.1 智能读取大数据集

import pandas as pd

# 分块读取大数据集
chunk_iter = pd.read_csv('large_dataset.csv', chunksize=100000)
for chunk in chunk_iter:
    process(chunk)  # 自定义处理函数

# 只读取需要的列
cols = ['id', 'name', 'value']
df = pd.read_csv('data.csv', usecols=cols)

# 指定数据类型减少内存占用
dtypes = {'id': 'int32', 'price': 'float32'}
df = pd.read_csv('data.csv', dtype=dtypes)

1.2 数据概览高阶技巧

# 显示所有列的统计信息(包括非数值列)
df.describe(include='all')

# 检查内存使用情况
df.info(memory_usage='deep')

# 唯一值及其计数的高级展示
for col in df.select_dtypes(include=['object']).columns:
    print(f"\n{col}的值分布:")
    print(df[col].value_counts(dropna=False).head(10))

二、高级数据清洗技术
2.1 智能处理缺失值

# 可视化缺失值
import missingno as msno
msno.matrix(df)

# 基于规则填充缺失值
df['salary'] = df.groupby('department')['salary'].apply(
    lambda x: x.fillna(x.mean())
)

# 创建缺失值指示特征
df['age_missing'] = df['age'].isna().astype(int)

2.2 异常值检测与处理

# 使用IQR方法检测异常值
def detect_outliers(df, col):
    Q1 = df[col].quantile(0.25)
    Q3 = df[col].quantile(0.75)
    IQR = Q3 - Q1
    lower_bound = Q1 - 1.5 * IQR
    upper_bound = Q3 + 1.5 * IQR
    return ~df[col].between(lower_bound, upper_bound)

outliers = detect_outliers(df, 'price')
df['price_cleaned'] = np.where(outliers, np.nan, df['price'])

# 使用Z-score处理异常值
from scipy import stats
df['z_score'] = np.abs(stats.zscore(df['value']))
df['value_cleaned'] = np.where(df['z_score'] > 3, np.nan, df['value'])

2.3 高级字符串处理

# 使用正则表达式提取信息
df['phone_area'] = df['phone'].str.extract(r'\((\d{3})\)')

# 向量化的字符串操作
df['name'] = df['first_name'].str.cat(df['last_name'], sep=' ')

# 使用fuzzywuzzy进行模糊匹配
from fuzzywuzzy import fuzz
df['similarity'] = df.apply(
    lambda x: fuzz.ratio(x['name1'], x['name2']), axis=1
)

三、高效数据转换技巧
3.1 高级分组聚合

# 同时计算多个聚合函数
agg_funcs = {
    'sales': ['sum', 'mean', 'max'],
    'profit': lambda x: (x > 0).mean()  # 盈利比例
}
result = df.groupby('region').agg(agg_funcs)

# 使用transform保持原始DataFrame形状
df['dept_avg_salary'] = df.groupby('department')['salary'].transform('mean')

# 使用pivot_table进行透视
pd.pivot_table(df, values='sales', index='region',
               columns='quarter', aggfunc=np.sum,
               margins=True, margins_name='总计')

3.2 高性能数据合并

# 基于索引的快速合并
df1.join(df2, how='left')

# 使用merge的indicator参数跟踪合并来源
pd.merge(df1, df2, on='key', how='outer', indicator=True)

# 使用concat进行轴向合并
pd.concat([df1, df2], axis=1, keys=['2022', '2023'])

3.3 时间序列高级处理

# 重采样与滚动窗口
df.set_index('date').resample('W').mean()  # 按周重采样
df.rolling(window='30D').mean()  # 30天滚动平均

# 处理时区
df['timestamp'] = df['timestamp'].dt.tz_localize('UTC').dt.tz_convert('Asia/Shanghai')

# 时间特征工程
df['hour'] = df['timestamp'].dt.hour
df['is_weekend'] = df['timestamp'].dt.dayofweek >= 5

四、内存优化与性能提升
4.1 数据类型优化

# 自动优化数据类型
def optimize_dtypes(df):
    for col in df.columns:
        col_type = df[col].dtype
        
        if col_type == 'object':
            num_unique = df[col].nunique()
            if num_unique / len(df) < 0.5:
                df[col] = df[col].astype('category')
                
        elif col_type == 'float64':
            df[col] = pd.to_numeric(df[col], downcast='float')
            
        elif col_type == 'int64':
            df[col] = pd.to_numeric(df[col], downcast='integer')
    
    return df

df = optimize_dtypes(df)

4.2 并行处理加速

# 使用swifter加速apply操作
import swifter
df['new_col'] = df['text'].swifter.apply(process_text)

# 使用modin替代pandas实现并行处理
import modin.pandas as mpd
df = mpd.read_csv('large_file.csv')

4.3 高效迭代方法对比

# 各种迭代方法的性能比较
def iterrows_example(df):
    for index, row in df.iterrows():
        process(row)

def itertuples_example(df):
    for row in df.itertuples():
        process(row)

def vectorized_example(df):
    df['new_col'] = df['col1'] + df['col2']
    
# 向量化操作通常比迭代快100-1000倍

五、实战案例:电商数据分析

# 1. 数据加载与初步清洗
df = pd.read_csv('ecommerce.csv', parse_dates=['order_date'])
df = df[df['order_amount'] > 0]  # 过滤无效订单

# 2. RFM分析
snapshot_date = df['order_date'].max() + pd.Timedelta(days=1)
rfm = df.groupby('customer_id').agg({
    'order_date': lambda x: (snapshot_date - x.max()).days,
    'order_id': 'count',
    'order_amount': 'sum'
})
rfm.columns = ['recency', 'frequency', 'monetary']

# 3. RFM分箱与评分
rfm['R_score'] = pd.qcut(rfm['recency'], 5, labels=[5,4,3,2,1])
rfm['F_score'] = pd.qcut(rfm['frequency'], 5, labels=[1,2,3,4,5])
rfm['M_score'] = pd.qcut(rfm['monetary'], 5, labels=[1,2,3,4,5])
rfm['RFM_score'] = rfm[['R_score','F_score','M_score']].sum(axis=1)

# 4. 客户分层
seg_map = {
    r'[12-15]': '高价值客户',
    r'[9-11]': '潜力客户',
    r'[6-8]': '一般客户',
    r'[3-5]': '流失风险客户'
}
rfm['segment'] = rfm['RFM_score'].astype('str').replace(seg_map, regex=True)

六、Pandas性能优化黄金法则
避免循环:尽量使用向量化操作和内置函数

选择正确的数据类型:category类型可以大幅减少内存使用

使用查询优化:.query()方法通常比布尔索引更快

合理使用索引:设置索引可以加速查询和合并操作

分批处理大数据:使用chunksize参数处理无法一次性加载的数据

利用eval和query:对于复杂表达式,可以显著提高性能

df.eval('result = (col1 + col2) / col3', inplace=True)

结语
Pandas的高阶功能可以让你在数据清洗和分析工作中事半功倍。本文介绍的技术涵盖了从数据读取、清洗、转换到性能优化的全流程高级操作。掌握这些技巧后,你将能够处理更复杂的数据分析任务,并以更高的效率完成工作。

记住,熟练使用Pandas的关键在于理解其底层设计原理(如向量化操作)和不断实践。建议读者将本文中的示例代码应用到自己的项目中,逐步掌握这些高阶技巧。

最后:
希望你编程学习上不急不躁,按照计划有条不紊推进,把任何一件事做到极致,都是不容易的,加油,努力!相信自己!

文末福利
最后这里免费分享给大家一份Python全套学习资料,希望能帮到那些不满现状,想提升自己却又没有方向的朋友,也可以和我一起来学习交流呀。

包含编程资料、学习路线图、源代码、软件安装包等!【点击这里】领取!
① Python所有方向的学习路线图,清楚各个方向要学什么东西
② 100多节Python课程视频,涵盖必备基础、爬虫和数据分析
③ 100多个Python实战案例,学习不再是只会理论
④ 华为出品独家Python漫画教程,手机也能学习

在这里插入图片描述

Python 数据清洗与预处理全攻略:从入门实战到高效进阶 在数据驱动的时代,原始数据往往“脏乱差”:缺失值、重复项、数据类型错配、格式混乱……这些问题如果放任不管,模型训练准确性会大打折扣,业务决策也会走偏。本文将带你从基础工具入门,到大规模数据流的高效并行方案,结合丰富的 Python 代码示例与实践案例,帮助初学者快速上手,也为资深开发者提供深度优化思路,让你在数据清洗和预处理的道路上既有温度又有力量。 阅读详情

相关推荐

Python数据清洗与分析全攻略:从Pandas到深度学习的异常检测进阶

尤其是在处理实际业务数据时,经常会遇到各种异常数据(如缺失值、重复值、离群点等),这些异常数据往往会严重影响数据分析结果和模型训练的准确性。简单的统计方法可能无法有效处理复杂数据的异常检测问题,尤其是在面对高维数据或大量不规则数据时。当某个数据点的重建误差大于设定的阈值时,我们认为它是异常点。技术的不断发展,未来我们可以预见更多智能化的数据清洗和异常检测方法会不断涌现,进一步提升数据分析的精度与效率。箱型图是一种常见的异常值检测方法,它通过计算数据的四分位数(Q1, Q3)来识别异常值,通常被认为是远离。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1051

Pandas(三)数据高阶处理

数据连接-merge()函数,数据合并-concat,数据分组-groupby, Pivot_table()函数,stack()函数 & unstack()函数,Pandas中的高阶函数(map()函数,apply()函数,applymap()函数)

baidu_36900142的博客 1201

Pandas数据清洗实战:缺失值、重复值与类型转换全攻略

数据清洗是数据分析流程中不可跳过的基础环节,原始数据往往存在缺失值、重复记录、类型错乱、日期格式不统一等问题。清洗的本质是识别异常、修复结构、统一规范,从而提升数据质量与建模可靠性。在工程实践中,Pandas 提供了从缺失值填充、重复值去重到数据类型转换、日期标准化的一整套高效接口,帮助分析者快速将“脏数据”整理为可用表结构。无论是订单表、用户表还是实验记录,这套方法都适用于日常数据处理与特征工程。本文以 Pandas 为核心,完整演示数据清洗的实战流程,覆盖高频场景与性能优化技巧,可直接迁移到真实项目中。

weixin_33158887的博客 350

数据挖掘-4.Pandas高级

文章目录pandas高级1 高级处理-缺失值处理学习目标1 如何处理nan2 电影数据的缺失值处理2.1 判断缺失值是否存在2.2 存在缺失值nan,并且是np.nan2.3 不是缺失值nan,有默认标记的3 小结2 高级处理-数据离散化学习目标1 为什么要离散化2 如何数据的离散化3 股票的涨跌幅离散化3.1 读取股票的数据3.2 将股票涨跌幅数据进行分组3.3 股票涨跌幅分组数据变成one-hot编码4 小结3. 高级处理-合并学习目标1 pd.concat实现数据合并2 pd.merge2.1 pd.

weixin_43732424的博客 5528

Sublime Text4代码配色自定义方案

关于Sublime Text对于我的使用体验,只能说内置的代码主题真的都太low了,一点都不好看。所以接下来我分享一下我自定义代码配色。当然,大家也可以通过我给的中文翻译注释来自定义自己喜欢的颜色。废话不多说,直接上代码直接将代码复制粘贴到:Preferences > Customize Color Scheme 即可。},"globals":"foreground": "var(white)", // 前景色。

追求细节,成就完美 6026

使用autodl服务器运行CasMVSNet以及使用colmap产生的数据

MVSNet学习

qq_44708206的博客 3274

50 个 Pandas 高级操作,建议收藏!

↓推荐关注↓转自:https://zhuanlan.zhihu.com/p/568250201在数据分析和数据建模的过程中需要对数据进行清洗和整理等工作,有时需要对数据增删字段。下面为大家介绍Pandas对数据的实际业务需求往往需要按照一定的条件甚至复杂的组合条件来查询数据,接下来为大家介绍如何发挥Pandas数据筛选的无限可能,随心所欲地取用数据。

AI大模型资料分享员 1884

为什么我的Win11家庭版找不到BitLocker?教你两种强制关闭加密的隐藏方法

本文解释了Win11家庭版为何缺少BitLocker功能,并提供了两种强制关闭加密的隐藏方法。通过注册表修改和PowerShell命令,用户可以调出隐藏的加密控制面板或直接操控加密引擎,解决家庭版设备加密的管理难题。

weixin_42535703的博客 1769

pandas高阶用法(一)

近期需要大量处理数据,pandas比excel效率高太多,记录一下pandas的常用高阶用法。

黄钢的博客 984

如何利用CN3791实现太阳能电池板对锂电池的高效充电管理

本文详细介绍了如何利用CN3791芯片实现太阳能电池板对锂电池的高效充电管理。CN3791集成了MPPT(最大功率点跟踪)功能,能智能调节太阳能板的输出,确保在不同光照条件下获得最大功率。文章涵盖芯片工作原理、外围电路设计、充电全过程管理及实际应用经验,帮助开发者优化太阳能充电系统效率。

weixin_33709219的博客 499

windows11 远程桌面连接 通过代理连接RDP桌面报错 错误代码0x904 拓展错误代码0x7

打开windows Defender防火墙设置--允许应用通过防火墙更改设置--允许其他应用浏览--进入C:\WINDOWS\system32目录选择mstsc.exe进入C:\Windows\SysWOW64目录h'qmstsc.exe添加后列表里多了一个远程桌面连接,还有一个Remote Desktop Connection,配置网络权限后保存连接成功。

weixin_43978891的博客 1万+

50个Pandas高级操作,建议收藏!

来源丨网络人生苦短,菜鸟学Python!在数据分析和数据建模的过程中需要对数据进行清洗和整理等工作,有时需要对数据增删字段。下面为大家介绍Pandas对数据的复杂查询、数据类型转换、数据排序、数据的修改、数据迭代以及函数的使用01、复杂查询 实际业务需求往往需要按照一定的条件甚至复杂的组合条件来查询数据,接下来为大家介绍如何发挥Pandas数据筛选的无限可能,随心所欲地取用数据。1、逻辑运算# Q...

cainiao_python的博客 540

【APM】在Kubernetes中搭建OpenTelemetry+Loki+Tempo+Grafana链路追踪(实战一,Loki日志中查看链路追踪数据)

这对于那些不能直接控制 JVM 启动参数的应用特别有用,比如通过 JNI (Java Native Interface) 调用 JVM 的应用、脚本中嵌入的 JVM 应用,或者一些服务管理工具自动启动的服务。这为用户提供了一个灵活的架构,可以根据需要选择最适合自己的追踪解决方案,或者根据环境(如开发、测试、生产)的不同配置不同的后端。: OpenTelemetry SDK 提供了丰富的特性,如自动追踪上下文传播、手动追踪跨度的创建与关联、标签和事件的添加等,使得追踪数据更加丰富和有用。

CN_Eden 3241

一文搞定Python数据分析三剑客:NumPy、Pandas、Matplotlib全攻略

本文的独特价值在于突破传统教学的孤立讲解模式,文章不仅提供可直接复用的项目代码和数据集,更通过精心设计的流程图揭示三库协同工作机制,带你亲手搭建从原始数据到商业洞察的端到端分析能力,真正掌握企业级数据分析的完整方法论。

2301_77705369的博客 5238

YOLOv11改进有效系列目录 - 包含卷积、主干、检测头、注意力机制、Neck上百种创新机制 - 针对多尺度、小目标、遮挡、恶劣天气等问题

在一些特定情况下,目标检测任务由于多种因素的影响,变得更加复杂和困难。以下是几类常见的困难目标检测场景:1. 小目标检测定义:小目标检测是指当目标在图像中的占比非常小时,模型需要准确识别和定位这些目标。典型场景包括远程监控、卫星图像分析等。挑战1. 低分辨率:由于目标在图像中占据像素较少,细节缺失,特征提取难度增加。2. 特征不足:小目标缺乏明显的形状和纹理特征,容易被复杂背景淹没。3. 检测难度大:由于小目标与背景之间的对比度较低,误检的几率上升。4. 数据不平衡。

qq_64693987的博客 4万+

基于FPGA的相控阵雷达波束控制系统设计(2)

也就是在计算波控码时0,按2.8125递增,取遍-90

qq_43416206的博客 1812

Python爬虫(58)Python数据清洗与分析全攻略:从Pandas到深度学习的异常检测进阶

《结构化数据清洗与智能异常检测实战》 摘要: 本文针对企业海量结构化数据的价值挖掘挑战,提出从基础清洗到深度学习的全流程解决方案。在数据清洗环节,详细对比精确去重与模糊去重策略,给出基于业务场景的缺失值处理矩阵;在异常检测环节,创新性地结合自动编码器和图神经网络,分别适用于时序数据和关系型数据。最后通过金融反欺诈案例,展示如何将Pandas高效清洗与深度学习检测相融合,实现误报率降低至2%的效果。全文包含8个可复用的代码模块和3套策略选择指南,为数据质量治理提供实践参考。

优快云博客专家,领域包括但不限于:AI、大数据、Python、架构师,有合作、课程、问题、疑惑请私信博主 1万+

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Python爬虫【五十八章】Python数据清洗与分析全攻略:从Pandas到深度学习的异常检测进阶

fill:#333;color:#333;color:#333;fill:none;合格不合格原始数据数据清洗数据质量评估特征工程模型训练异常检测人工复核规则优化。

2501_92499985的博客 1726

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Pandas 数据清洗全攻略:从问题诊断到完美处理

而 Pandas 作为 Python 数据分析的主力军,其强大的数据清洗功能,能帮助我们将杂乱无章的数据打磨成可供深入分析的优质数据。在使用 Pandas 进行数据清洗时,建议按照 “先诊断,后处理” 的原则,先全面了解数据存在的问题,再选择合适的方法进行处理。duplicated()函数用于判断数据中是否存在重复行,返回一个布尔型 Series,其中每个元素表示对应行是否为重复行(除第一次出现外,后续相同的行被视为重复行):​。处理异常值前,首先要识别异常值,常见的方法有:​。

LNNNNNNNNLLLL的博客 1013

Pandas 数据预处理全攻略:从入门到精通

Pandas,作为 Python 数据分析的核心库,提供了强大而灵活的工具,能够帮助我们高效地完成数据预处理任务。Pandas 是一个功能强大的数据分析工具,它提供了丰富的数据预处理功能,能够帮助我们高效地完成数据清洗、转换、整合和优化等任务。如果数据存储在 Excel 文件中,可以使用 Pandas 的 `ExcelFile` 和 `read_excel()` 函数。数据转换是数据预处理中的关键步骤之一。Pandas 提供了 `merge`、`join` 和 `concat` 等方法来合并数据。

wj2kag33yp的博客 1878

Pandas 知识点全攻略:数据处理与分析的必备指南

【代码】Pandas 知识点全攻略:数据处理与分析的必备指南。

798

Pandas数据分析 -- Pandas进阶语法全攻略:从数据处理到复杂分析实战

本文系统介绍了Pandas进阶数据处理技巧,涵盖数据读写、增删改查和缺失值处理三大核心模块。在数据读写方面,详细讲解了MySQL和JSON文件的读写方法;在DataFrame操作部分,提供了增删改查的完整代码示例;针对常见的数据缺失问题,则给出了检测、删除、填充等多种解决方案。全文以实战代码为主,适合有一定Pandas基础的数据分析师参考使用,可显著提升数据处理效率与数据分析能力。

2401_86509639的博客 1348

【大模型微调数据清洗全攻略】:掌握高效清洗与格式转换的5大核心技巧

掌握大模型微调的数据清洗与格式转换核心方法,提升训练效率与模型性能。涵盖文本去噪、数据标准化、格式统一等5大技巧,适用于NLP、多模态等场景,操作高效、兼容性强,值得收藏。

LogicNest的博客 1187

学情分析Python模型构建全攻略(从数据清洗到可视化)

掌握学情分析Python模型构建全流程,解决教育数据处理难题。涵盖数据清洗、特征工程、建模分析到可视化呈现,适用于学生表现预测与教学优化。方法实用、步骤清晰,助力教育者高效决策,值得收藏。

InitPulse的博客 1123

Python CSV文件处理全攻略:从csv模块到pandas的高效数据读写与清洗

CSV(逗号分隔值)文件是数据交换和存储的基础格式,广泛应用于数据分析、数据迁移和自动化报表等场景。其核心原理是通过特定分隔符(如逗号、制表符)将结构化文本数据组织成表格形式。在Python生态中,处理CSV主要有两大技术路径:标准库csv模块提供轻量级、内存友好的逐行处理能力,适合处理超大型文件或需要精细控制的场景;而第三方库pandas则通过DataFrame数据结构,集成了强大的数据清洗、转换和分析功能,极大提升了数据科学工作流的效率。掌握这两者的选型策略与实战技巧,能够有效解决编码报错、内存溢出、数

weixin_30666401的博客 435

揭秘电商平台促销数据背后的真相:Python高效分析全攻略

掌握电商促销数据分析Python技巧,提升营销决策效率。本文详解销量趋势预测、用户行为挖掘与ROI评估方法,结合真实案例与Pandas、Matplotlib实战代码,助你快速构建分析模型。高效、精准、可复用,值得收藏。

VarFun的博客 700
上一篇: Python从入门到精通:10个超有趣脚本带你玩转编程!
下一篇: Python 10个常见运行时错误及解决方法
Python_trys
博客等级 码龄2年 4369粉丝 377原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值