大数跨境
0
0

使用DeepSeek学习用Pandas做数据分析

使用DeepSeek学习用Pandas做数据分析 参宿ag
2025-06-02
0
数据去重
Prompt:
作为数据分析专家,请给小白介绍Pandas库中识别及删除重复数据的方法。
DeepSeek:

当然!下面是为小白用户量身定制的 Pandas 教程,教你如何识别和删除重复数据(duplicate data),通俗易懂、一步步带你走!


🐼 什么是 Pandas?

Pandas 是 Python 的一个数据分析神器,就像 Excel 的进阶版!我们常用它来读表格、筛选数据、分析规律。


🎯 为什么要管“重复数据”?

在真实世界里,数据可能因为多次采集、合并表格、手动录入等原因,出现一模一样部分重复的记录。如果不清理干净,会影响统计分析结果!


🔍 第一步:识别重复数据

假设你有一个表格如下:

import pandas as pd
data = {    'name': ['Alice''Bob''Alice''David'],    'age': [25302540]}df = pd.DataFrame(data)print(df)

输出结果:

    name  age0  Alice   251    Bob   302  Alice   25  ← 重复了!3  David   40


✅ 用 .duplicated() 来识别:


df.duplicated()

返回一个布尔值序列,代表每一行是否是重复的(默认从上往下比较)。

结果:

0    False1    False2     True  ← 是重复的3    False

✅ 默认检查整行是否重复,你也可以指定只看某几列,比如只看 name

df.duplicated(subset=['name'])


🧹 第二步:删除重复数据

🚮 用 .drop_duplicates() 来干掉它!

df_clean = df.drop_duplicates()print(df_clean)

结果:

    name  age0  Alice   251    Bob   303  David   40
注意!默认是保留第一次出现的,后面的都删掉了。

想要就地修改原 DataFrame?

加个参数:

df.drop_duplicates(inplace=True)


🧠 小技巧锦囊

方法
作用
df.duplicated()
返回重复布尔数组
df.duplicated(subset=['列名'])
判断某列是否重复
df.drop_duplicates()
删除重复行
keep='first'
保留第一次出现的(默认)
keep='last'
保留最后一次出现的
keep=False
所有重复行都删掉(无情模式)

🧪 举个进阶例子

df = pd.DataFrame({    'name': ['Alice''Bob''Alice''Alice'],    'age': [25, 30, 25, 26]})
# 看看 name 和 age 是否一起重复print(df.duplicated(subset=['name''age']))


✅ 总结一句话!


用 duplicated() 找,drop_duplicates() 删,怕错就加 subset 指定列!



数据排序

Prompt:
作为数据分析专家,请给小白介绍Pandas中数据排序的方法,并给出示例。
DeepSeek:

当然可以!作为一个数据分析老司机,我来带你这位小白快速入门 Pandas 中最常用的操作之一:数据排序


🎯 为什么排序很重要?

排序就像在 Excel 里点表头排序一样,用来让数据更清晰、逻辑更强,比如:

  • 找出销量最高的商品

  • 按时间顺序查看事件记录

  • 对名字排序来更方便检索


🔧 Pandas 排序的两种主要方法

方法名
功能
sort_values()
按“值”排序(最常用)
sort_index()
按“索引”排序(次常用)


🚀 一、按值排序:sort_values()

最常见的方式就是对某一列的值从小到大、或从大到小排序。

🔹 示例:

import pandas as pd
data = {    'name': ['Alice''Bob''Charlie''David'],    'age': [25302235]}df = pd.DataFrame(data)
按年龄升序排序(默认):
df_sorted = df.sort_values(by='age')print(df_sorted)
输出:
     name  age2  Charlie   220    Alice   251      Bob   303    David   35


按年龄降序排序:

df_sorted = df.sort_values(by='age', ascending=False)


按多个列排序(先按年龄,再按姓名):

df_sorted = df.sort_values(by=['age''name'])


🔄 二、按索引排序:sort_index()

如果你想把 DataFrame 按索引的大小来排序,就用这个!

举个例子:

df2 = df.sort_values(by='age'ascending=False)print(df2)

这时候的索引是乱的(0, 1, 2, 3被打乱了):

     name  age3   David   351     Bob   300   Alice   252 Charlie   22

你想恢复排序后的顺序?

df2 = df2.sort_index()

🧠 一些常用参数总结:

参数
作用
by='列名'
指定排序的列
ascending=True
是否升序(默认是True)
inplace=True
是否原地修改,不返回新对象
ignore_index=True
重置索引(常用在排序后)
na_position='last'
缺失值排在最后(默认)或前面

🧪 一个带缺失值的例子:

df3 = pd.DataFrame({    'name': ['Alice''Bob''Charlie''David'],    'score': [88None7595]})
df3.sort_values(by='score', na_position='first', inplace=True)print(df3)

✅ 总结一句话!


用 sort_values(by=列名) 排值,用 sort_index() 排索引,加上 ascending 控制升降,加 inplace 直接改!



数据合并
Prompt:
作为数据分析专家,请介绍Pandas的merge ()方法,并对参数进行详细讲解,列举示例,并对合并结果进行解释。
DeepSeek:

太好了!你现在正在进入 Pandas 中最强大的操作之一 —— merge() 合并方法,它是数据分析师的“拼图神器”。
如果你熟悉 SQL 里的 JOIN,这个方法就是 Python/Pandas 世界里的对应物。


🧩 一、什么是 merge()

merge() 就是把两个表格按某个关键列(key)对齐拼接起来,类似数据库里的连接操作(join)。


🔧 二、基本语法

pd.merge(leftright, how='inner'on=None, left_on=None, right_on=None, ...)

核心参数解析:

参数
作用
left/right
左、右两个要合并的 DataFrame
on
指定左右都有的“公共列”,用来对齐
left_on/right_on
如果左右的 key 列名字不一样,用这两个指定
how
合并方式:inner / left / right / outer
suffixes
重复列的后缀,例如 ('_left', '_right')


🔀 三、合并方式详解(how

合并方式
描述
'inner'(默认)
取交集,只有左右都有的 key 才保留
'left'
以左表为主,右表匹配不到的值填 NaN
'right'
以右表为主
'outer'
取并集,左右都保留,匹配不到的填 NaN


🧪 四、实战示例

👉 先准备两个表:

import pandas as pd
# 左表:员工信息df1 = pd.DataFrame({    'emp_id': [123],    'name': ['Alice''Bob''Charlie']})
# 右表:薪资信息df2 = pd.DataFrame({    'emp_id': [234],    'salary': [700080009000]})

1️⃣ 默认 inner 合并(交集):

result = pd.merge(df1, df2, on='emp_id')print(result)

输出:

   emp_id    name  salary0       2     Bob    70001       3  Charlie    8000

🧠 解读:只保留 emp_id=2 和 3,因为左右表都存在。


2️⃣ left 合并(以左表为主):

result = pd.merge(df1, df2, on='emp_id', how='left')print(result)

输出:

   emp_id    name  salary0       1   Alice     NaN1       2     Bob  7000.02       3  Charlie 8000.0

🧠 解读:保留所有左表的员工,右边没有匹配的就填 NaN。



3️⃣ outer 合并(全并集):

result = pd.merge(df1, df2, on='emp_id', how='outer')print(result)

输出:

   emp_id    name  salary0       1   Alice     NaN1       2     Bob  7000.02       3  Charlie 8000.03       4     NaN  9000.0

🧠 解读:所有 emp_id 都保留,哪边没有的就补 NaN。



4️⃣ 当左右的 key 列不同名时:

df1 = pd.DataFrame({    'id': [1, 2, 3],    'name': ['Alice''Bob''Charlie']})
df2 = pd.DataFrame({    'emp_id': [2, 3, 4],    'salary': [7000, 8000, 9000]})
result = pd.merge(df1, df2, left_on='id', right_on='emp_id', how='inner')print(result)

输出:

   id     name  emp_id  salary0   2      Bob       2    70001   3  Charlie       3    8000


🧠 五、常见问题小贴士

  1. 重复列名怎么办?
    用 suffixes=('_left', '_right') 来区分同名列。

  2. key列有重复?
    会产生“笛卡尔积”,即一对多或多对多组合,注意观察是否合理。

  3. 合并完后索引乱了?
    可以 reset_index(drop=True) 清理一下。


✅ 总结口诀:


merge 是连接,on 是主键,how 控制拼法,NaN 是匹配不到的标志。列名不一样?用 left_on/right_on!




【声明】内容源于网络
0
0
参宿ag
专注AI,写作/绘画/编程,我的真实经历
内容 22
粉丝 0
参宿ag 专注AI,写作/绘画/编程,我的真实经历
总阅读16
粉丝0
内容22