职贝云数AI新零售门户

标题: 运用DeepSeek学惯用Pandas做数据分析 [打印本页]

作者: xSAkNE    时间: 5 天前
标题: 运用DeepSeek学惯用Pandas做数据分析
数据去重Prompt:作为数据分析专家,请给小白引见Pandas库中辨认及删除反复数据的方法。DeepSeek:
当然!下面是为小白用户量身定制的 Pandas 教程,教你如何辨认和删除反复数据(duplicate data),粗浅易懂、一步步带你走!

🐼 什么是 Pandas?


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

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


在真实世界里,数据能够由于多次采集、合并表格、手动录入等缘由,出现如出一辙或部分反复的记录。假如不清算干净,会影响统计分析结果!

🔍 第一步:辨认反复数据


假设你有一个表格如下:

import pandas as pd
data = {    'name': ['Alice', 'Bob', 'Alice', 'David'],    'age': [25, 30, 25, 40]}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': [25, 30, 22, 35]}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': [88, None, 75, 95]})
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(left, right, 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': [1, 2, 3],    'name': ['Alice', 'Bob', 'Charlie']})
# 右表:薪资信息df2 = pd.DataFrame({    'emp_id': [2, 3, 4],    'salary': [7000, 8000, 9000]})
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


🧠 五、常见成绩小贴士


✅ 总结口诀:




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






欢迎光临 职贝云数AI新零售门户 (https://www.taojin168.com/cloud/) Powered by Discuz! X3.5