前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >人人都会AI|Python基础之Pandas利器(6)

人人都会AI|Python基础之Pandas利器(6)

作者头像
一臻AI
发布2025-03-06 15:09:44
发布2025-03-06 15:09:44
400
代码可运行
举报
文章被收录于专栏:一臻AI一臻AI
运行总次数:0
代码可运行

在AI+数据分析这片广阔天地里,Pandas好比利器,会让处理数据变得轻松自如。

不管你是想清洗杂乱无章的数据,还是要从海量信息中提取价值,Pandas都能帮你轻松搞定。

精巧设计的数据容器Pandas

在Pandas世界里,Series和DataFrame是两大主力选手。

Series就像一个智能化的列表,不仅能存数字,还能放字符串,甚至是日期时间。DataFrame则更像个超级电子表格,能同时处理多种类型的数据。

让我们通过一个小案例来认识它们:

代码语言:javascript
代码运行次数:0
复制
import pandas as pd

# 创建一个Series - 存储一组城市的温度数据
temperatures = pd.Series([25, 28, 23, 30, 27],
                        index=['北京', '上海', '广州', '深圳', '杭州'],
                        name='温度')
print("城市温度数据:\n", temperatures)

# 创建一个DataFrame - 存储城市的天气信息
weather_data = {
    '温度': [25, 28, 23, 30, 27],
    '湿度': [45, 60, 80, 70, 55],
    '天气': ['晴', '多云', '雨', '晴', '多云']
}
cities = ['北京', '上海', '广州', '深圳', '杭州']
weather_df = pd.DataFrame(weather_data, index=cities)
print("\n城市天气信息:\n", weather_df)

# 数据访问
print("\n上海的天气信息:\n", weather_df.loc['上海'])
print("\n所有城市的温度:\n", weather_df['温度'])

这段代码如魔术一样,轻松创建了一个温度Series和一个天气DataFrame。Series就像一个城市温度表,而DataFrame则包含了更多信息,就像一个小型气象站。

打开数据世界的大门

Pandas最强大之处在于它能处理各种格式的数据文件。

CSV、Excel、JSON,统统不在话下。好比让你有一把万能钥匙,能打开各种数据的大门。

代码语言:javascript
代码运行次数:0
复制
import pandas as pd

# 从CSV文件读取数据
sales_df = pd.read_csv('sales_data.csv')

# 查看数据基本信息
print("数据概览:")
print(sales_df.info())

# 查看前5行数据
print("\n前5行数据:")
print(sales_df.head())

# 基本统计信息
print("\n基本统计信息:")
print(sales_df.describe())

# 保存数据到Excel
sales_df.to_excel('sales_analysis.xlsx', 
                  sheet_name='销售数据',
                  index=False)

# 从Excel读取特定sheet的数据
excel_data = pd.read_excel('sales_analysis.xlsx',
                          sheet_name='销售数据')

一通操作,直接给数据装上了翅膀,可以自由地在不同格式间转换。不管是读取CSV文件还是保存Excel表格,都是小菜一碟。

这些只是Pandas的冰山一角。在下一部分,我们将深入探讨数据清洗和分析的奥秘。

数据分析利器Pandas

承接上文,我们继续探索Pandas的魔法世界。当你面对杂乱无章的数据时,Pandas直接化身细心的管家,帮你打理得井井有条。

数据清洗:让杂乱数据变得整洁有序

数据清洗就像给数据洗澡,处理缺失值、删除重复项、转换数据类型,一切都变得干净整洁。来看看这个实用的数据清洗示例:

代码语言:javascript
代码运行次数:0
复制
import pandas as pd
import numpy as np

# 创建一个包含问题数据的DataFrame
messy_data = pd.DataFrame({
    '姓名': ['张三', '李四', '王五', '张三', np.nan],
    '年龄': ['25', np.nan, '35', '28', '40'],
    '城市': ['北京', '上海', None, '北京', '广州'],
    '注册日期': ['2023-01-01', '2023/02/01', '2023.03.01', '2023-01-01', '2023-04-01']
})

print("原始数据:\n", messy_data)

# 1. 处理缺失值
clean_data = messy_data.dropna(subset=['姓名'])  # 删除姓名为空的行
clean_data['城市'].fillna('未知', inplace=True)   # 填充城市的空值

# 2. 删除重复行
clean_data = clean_data.drop_duplicates(subset=['姓名', '年龄'], keep='first')

# 3. 数据类型转换
clean_data['年龄'] = pd.to_numeric(clean_data['年龄'], errors='coerce')
clean_data['注册日期'] = pd.to_datetime(clean_data['注册日期'], format='mixed')

print("\n清洗后的数据:\n", clean_data)

# 查看数据信息
print("\n数据信息:")
print(clean_data.info())

数据筛选与排序:精准定位你需要的数据

就像在图书馆里找书一样,Pandas能帮你快速找到需要的数据。不管是简单的条件筛选,还是复杂的多重条件,都能轻松应对。

代码语言:javascript
代码运行次数:0
复制
import pandas as pd

# 创建示例数据
sales_data = pd.DataFrame({
    '产品': ['手机', '电脑', '平板', '手机', '电脑', '平板'],
    '品牌': ['苹果', '联想', '华为', '三星', '华硕', '小米'],
    '价格': [8999, 6999, 3999, 6999, 5999, 2999],
    '销量': [500, 300, 400, 450, 350, 600],
    '评分': [4.8, 4.6, 4.7, 4.5, 4.4, 4.9]
})

print("原始数据:\n", sales_data)

# 基础筛选:价格大于5000的产品
expensive = sales_data[sales_data['价格'] > 5000]
print("\n价格高于5000的产品:\n", expensive)

# 多条件筛选:销量大于400且评分大于4.6的产品
popular_good = sales_data[(sales_data['销量'] > 400) & (sales_data['评分'] > 4.6)]
print("\n热销且好评的产品:\n", popular_good)

# 按价格降序排列,销量升序排列
sorted_data = sales_data.sort_values(['价格', '销量'], ascending=[False, True])
print("\n按价格降序、销量升序排列:\n", sorted_data)

# 按品牌分组统计
summary = sales_data.groupby('产品').agg({
    '价格': 'mean',
    '销量': 'sum',
    '评分': 'mean'
}).round(2)

print("\n产品类别统计:\n", summary)

通过这些实例,你可以看到Pandas就像一个数据管家,帮你打理各种杂乱的数据。不管是清洗数据还是筛选排序,都变得如此简单。

Pandas高级技巧

数据聚合和分组运算就像给数据做体检,能让你一眼看出数据的"健康状况"。Pandas为我们提供了强大的工具,轻松应对各种复杂的分析需求。

数据聚合:从数字中发现故事

来看看如何用Pandas进行数据聚合分析:

代码语言:javascript
代码运行次数:0
复制
import pandas as pd

# 创建销售数据
sales_data = pd.DataFrame({
    '日期': pd.date_range('2024-01-01', '2024-01-10'),
    '产品类别': ['电子', '服装', '电子', '食品', '服装', 
              '电子', '食品', '服装', '电子', '食品'],
    '销售额': [5000, 3000, 4500, 2000, 3500, 
            6000, 2500, 4000, 5500, 3000],
    '销售量': [50, 100, 45, 200, 120, 
            60, 250, 130, 55, 300],
    '利润率': [0.3, 0.4, 0.35, 0.25, 0.45, 
            0.32, 0.28, 0.42, 0.33, 0.26]
})

# 基础聚合分析
category_summary = sales_data.groupby('产品类别').agg({
    '销售额': ['sum', 'mean'],
    '销售量': ['sum', 'mean'],
    '利润率': 'mean'
}).round(2)

print("各类别销售汇总:\n", category_summary)

# 时间序列分析
daily_trend = sales_data.set_index('日期').resample('3D').agg({
    '销售额': 'sum',
    '销售量': 'sum',
    '利润率': 'mean'
}).round(2)

print("\n三日销售趋势:\n", daily_trend)

# 自定义聚合分析
def profit_analysis(data):
    total_sales = data['销售额'].sum()
    avg_profit = data['利润率'].mean()
    return pd.Series({
        '总销售额': total_sales,
        '预计利润': total_sales * avg_profit,
        '平均利润率': avg_profit
    })

profit_summary = sales_data.groupby('产品类别').apply(profit_analysis).round(2)
print("\n各类别利润分析:\n", profit_summary)

数据合并:让数据集成为一体

有时候我们需要把多个数据源的信息整合到一起,Pandas提供了多种数据合并的方式:

代码语言:javascript
代码运行次数:0
复制
import pandas as pd

# 创建商品信息数据
products = pd.DataFrame({
    '商品ID': ['A001', 'A002', 'A003', 'A004'],
    '商品名': ['iPhone', 'MacBook', 'iPad', 'AirPods'],
    '类别': ['手机', '电脑', '平板', '配件']
})

# 创建销售数据
sales = pd.DataFrame({
    '商品ID': ['A001', 'A002', 'A003', 'A001', 'A004'],
    '销售日期': ['2024-01-01', '2024-01-01', '2024-01-02', 
              '2024-01-02', '2024-01-03'],
    '销售量': [10, 5, 8, 12, 20],
    '单价': [8999, 12999, 6999, 8999, 1999]
})

# 创建库存数据
inventory = pd.DataFrame({
    '商品ID': ['A001', 'A002', 'A003', 'A004', 'A005'],
    '库存量': [100, 50, 80, 200, 150],
    '仓库': ['北京', '上海', '广州', '北京', '深圳']
})

# 1. 使用merge合并商品信息和销售数据
sales_info = pd.merge(sales, products, on='商品ID', how='left')
print("销售详情:\n", sales_info)

# 2. 计算销售金额并与库存信息合并
sales_info['销售金额'] = sales_info['销售量'] * sales_info['单价']
full_info = pd.merge(sales_info, inventory[['商品ID', '库存量']], 
                     on='商品ID', how='left')
print("\n完整商品信息:\n", full_info)

# 3. 使用concat横向合并数据
inventory_extended = pd.concat([
    inventory,
    pd.DataFrame({
        '安全库存': [50, 30, 40, 100, 80],
        '补货点': [30, 20, 25, 60, 50]
    })
], axis=1)
print("\n扩展库存信息:\n", inventory_extended)

掌握了这些数据分析技巧,你就能像数据科学家一样,灵活运用Pandas处理各种复杂的数据分析任务。AI数据分析不再是难事,而是一场充满乐趣的探索之旅

记住,Pandas就是你的得力助手,它能帮你整理数据、发现规律、挖掘价值。多加练习,你也能成为数据分析高手!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-01-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 一臻AI 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 精巧设计的数据容器Pandas
  • 数据分析利器Pandas
  • Pandas高级技巧
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档