百度360必应搜狗淘宝本站头条
当前位置:网站首页 > IT知识 > 正文

10 分钟掌握 Pandas 核心操作:从零开始的数据分析实战

liuian 2025-01-12 16:25 15 浏览

大家好,我是章北海

在数据分析领域,Pandas 是一个不可或缺的 Python 库。

本文将通过一个真实的销售数据分析案例,系统地介绍 Pandas 的核心操作。无论你是数据分析新手还是希望系统复习的老手,这篇文章都值得收藏。

一、项目背景

假设你是一家连锁店的数据分析师,需要处理和分析全国各地区的销售数据。数据分散在不同的文件中,包括:

  • 销售记录(CSV 格式)
  • 客户信息(JSON 格式)

我们的目标是将这些数据整合起来,进行清洗和分析,最终得出有价值的商业洞察。

二、数据准备

首先,让我们创建示例数据:

# 创建示例 CSV 数据
sales_data = """
date,product,price,quantity,region
2024-01-01,A,100,5,North
2024-01-02,B,200,,South
2024-01-03,A,100,3,East
2024-01-04,C,300,4,West
2024-01-05,B,200,2,North
"""
# 创建示例 JSON 数据
customer_data = """
{
    "customers": [
        {"id": 1, "name": "张三", "region": "North"},
        {"id": 2, "name": "李四", "region": "South"}
    ]
}
"""
# 将数据保存到文件
with open('sales.csv', 'w') as f:
    f.write(sales_data)
    
with open('customers.json', 'w') as f:
    f.write(customer_data)

三、数据导入

Pandas 提供了丰富的数据导入功能,可以处理多种格式的数据文件:

import pandas as pd
# 导入 CSV 格式销售数据
df_sales = pd.read_csv('sales.csv')
# 导入 JSON 格式客户数据
df_customers = pd.read_json('customers.json')
# 创建日期索引
date_range = pd.date_range(start='2024-01-01', end='2024-01-05', freq='D')
# 合并数据集
df_combined = pd.concat([df_sales, df_customers], axis=1)

四、数据清洗

数据清洗是数据分析中最重要的步骤,包括处理缺失值、数据转换等操作:

# 1. 处理缺失值
df_sales = df_sales.fillna(0)  # 将缺失值填充为 0
# 2. 删除无效数据
df_sales = df_sales.dropna(how='all')  # 删除全为空的行
# 3. 数据排序
df_sales = df_sales.sort_values('price')  # 按价格排序
# 4. 数据转换
df_sales['total'] = df_sales.apply(lambda x: x['price'] * x['quantity'], axis=1)
# 5. 分组统计
region_stats = df_sales.groupby('region').agg({
    'total': 'sum',
    'quantity': 'count'
})
# 6. 数据合并
df_merged = df_sales.join(df_customers.set_index('region'), on='region')
# 7. 重命名列
df_sales = df_sales.rename(columns={'quantity': 'sales_volume'})
# 8. 设置索引
df_sales = df_sales.set_index('date')

五、数据统计分析

清洗完数据后,我们可以进行统计分析:

# 1. 查看数据概览
print("数据前 5 行:")
print(df_sales.head())
print("\n数据基本信息:")
print(df_sales.info())
# 2. 基础统计
print("\n基础统计值:")
print(df_sales.describe())
# 3. 详细统计
print("\n具体统计指标:")
print("平均价格:", df_sales['price'].mean())
print("价格中位数:", df_sales['price'].median())
print("销量总计:", df_sales['sales_volume'].count())
print("价格标准差:", df_sales['price'].std())
print("最高价格:", df_sales['price'].max())
print("最低价格:", df_sales['price'].min())

六、分析结果示例

数据前5行:
            product  price  sales_volume region  total
2024-01-01       A    100            5  North    500
2024-01-02       B    200            0  South      0
2024-01-03       A    100            3   East    300
2024-01-04       C    300            4   West   1200
2024-01-05       B    200            2  North    400
平均价格: 180.0
价格中位数: 200.0
销量总计: 5
价格标准差: 84.85
最高价格: 300
最低价格: 100

七、实战技巧总结

  1. 数据导入技巧
  2. 使用适当的 read_*() 函数导入不同格式的数据
  3. 合理使用 concat() 合并多个数据源
  4. 数据清洗要点
  5. 始终检查并处理缺失值
  6. 使用 groupby() 进行分组分析
  7. 灵活运用 apply() 进行数据转换
  8. 统计分析方法
  9. 先用 describe() 获取整体概览
  10. 根据业务需求选择合适的统计指标
  11. 注意异常值的处理

八、结语

本文通过一个完整的案例,展示了 Pandas 中最常用的数据处理操作。这些操作覆盖了数据分析工作中 90% 的日常需求。建议大家在实践中多加练习,熟能生巧。

记住,数据分析不仅仅是掌握这些技术操作,更重要的是培养数据思维,学会从数据中发现问题和洞察。

模型篇P1:机器学习基本概念

迄今最好的AI代码编辑器,编程只需狂按Tab

【大模型实战,完整代码】AI 数据分析、可视化项目

108页PDF小册子:搭建机器学习开发环境及Python基础

116页PDF小册子:机器学习中的概率论、统计学、线性代数

全网最全 Python、机器学习、AI、LLM 速查表(100 余张)

Obsidian AI写作神器:一键配置DeepSeek,写作效率飙升1000%!

基于 QAnything 的知识库问答系统:技术解析与应用实践【附代码】

相关推荐

vue怎么和后端php配合

Vue和后端PHP可以通过HTTP请求进行配合。首先,前端Vue可以使用axios库或者Vue自带的$http对象来发送HTTP请求到后端PHP接口。通过axios库发送POST、GET、PUT等请求...

Ansible最佳实践之 AWX 使用 Ansible 与 API 通信

#头条创作挑战赛#API简单介绍红帽AWX提供了一个类似Swagger的RESTful风格的Web服务框架,可以和awx直接交互。使管理员和开发人员能够在webUI之外控制其...

PHP8.3 错误处理革命:Exception 与 Error 全面升级

亲爱的小伙伴,好久没有发布信息了,最近学习了一下PHP8.3的升级,都有哪些优化和提升,把学到的分享出来给需要的小伙伴充下电。技术段位:高可用性必修目标收益:精准错误定位+异常链路追踪适配场景...

使用 mix/vega + mix/db 进行现代化的原生 PHP 开发

最近几年在javascript、golang生态中游走,发现很多npm、gomod的优点。最近回过头开发MixPHPV3,发现composer其实一直都是一个非常优秀的工具,但是...

15 个非常好用的 JSON 工具

JSON(JavaScriptObjectNotation)是一种流行的数据交换格式,已经成为许多应用程序中常用的标准。无论您是开发Web应用程序,构建API,还是处理数据,使用JSON工具可以大...

php8环境原生实现rpc

大数据分布式架构盛行时代的程序员面试,常常遇到分布式架构,RPC,本文的主角是RPC,英文名为RemoteProcedureCall,翻译过来为“远程过程调用”。主流的平台中都支持各种远程调用技术...

「PHP编程」如何搭建私有Composer包仓库?

在前一篇文章「PHP编程」如何制作自己的Composer包?中,我们已经介绍了如何制作自己的composer包,以及如何使用composer安装自己制作的composer包。不过,这其中有...

WAF-Bypass之SQL注入绕过思路总结

过WAF(针对云WAF)寻找真实IP(源站)绕过如果流量都没有经过WAF,WAF当然无法拦截攻击请求。当前多数云WAF架构,例如百度云加速、阿里云盾等,通过更改DNS解析,把流量引入WAF集群,流量经...

【推荐】一款 IDEA 必备的 JSON 处理工具插件 — Json Assistant

JsonAssistant是基于IntelliJIDEs的JSON工具插件,让JSON处理变得更轻松!主要功能完全支持JSON5JSON窗口(多选项卡)选项卡更名移动至主编辑器用...

技术分享 | 利用PHAR协议进行PHP反序列化攻击

PHAR(“PhpARchive”)是PHP中的打包文件,相当于Java中的JAR文件,在php5.3或者更高的版本中默认开启。PHAR文件缺省状态是只读的,当我们要创建一个Phar文件需要修改...

php进阶到架构之swoole系列教程(一)windows安装swoole

目录概述安装Cygwin安装swoolephp7进阶到架构师相关阅读概述这是关于php进阶到架构之swoole系列学习课程:第一节:windows安装swoole学习目标:在Windows环境将搭建s...

go 和 php 性能如何进行对比?

PHP性能很差吗?每次讲到PHP和其他语言间的性能对比,似乎都会发现这样一个声音:单纯的性能对比没有意义,主要瓶颈首先是数据库,其次是业务代码等等。好像PHP的性能真的不能单独拿出来讨论似的。但其实一...

Linux(CentOS )手动搭建LNMP(Linux+Nginx+Mysql+PHP)坏境

CentOS搭建LNMP(Linux+Nginx+Mysql+PHP)坏境由于网上各种版本新旧不一,而且Linux版本也不尽相同,所以自己写一遍根据官网的提示自己手动搭建过程。看官方文档很重要,永远...

json和jsonp区别

JSON和JSONP虽然只有一个字母的差别,但其实他们根本不是一回事儿:JSON是一种数据交换格式,而JSONP是一种非官方跨域数据交互协议。一个是描述信息的格式,一个是信息传递的约定方法。一、...

web后端正确的返回JSON

在web开发中,前端和后端发生数据交换传输现在最常见的形式就是异步ajax交互,一般返回给js都是json,如何才是正确的返回呢?前端代码想要获取JSON数据代码如下:$.get('/user-inf...