开启左侧

运用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()按“索引”排序(次经常使用)



🚀 1、按值排序: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'])

🔄 2、按索引排序: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 天下里的对于应物。

🧩 1、甚么是 merge()?


merge() 即是把二个表格按某个枢纽列(key)对于齐拼交起去,类似数据库里的跟尾操纵(join)。

🔧 2、根本语法

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')



🔀 3、兼并方法详解(how)

兼并方法描绘
'inner'(默认)与交加,只需阁下皆有的 key 才保存
'left'以右表为主,左表匹配没有到的值挖 NaN
'right'以左表为主
'outer'与并散,阁下皆保存,匹配没有到的挖 NaN



🧪 4、真战示例

👉 先准备二个表:

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


🧠 5、罕见成就小揭士


    重复列名如何办?
    用 suffixes=('_left', '_right') 去辨别共名列。

    key列有重复?
    会发生“笛卡我积”,即一对于多或者多对于多拉拢,留神察看可否公道。

    兼并完后索引治了?
    能够 reset_index(drop=True) 清理一下。

✅ 归纳心诀:




merge 是跟尾,on 是主键,how 掌握拼法,NaN 是匹配没有到的标记。列名纷歧样?用 left_on/right_on!

您需要登录后才可以回帖 登录 | 立即注册 qq_login

本版积分规则

发布主题
阅读排行更多+
用专业创造成效
400-778-7781
周一至周五 9:00-18:00
意见反馈:server@mailiao.group
紧急联系:181-67184787
ftqrcode

扫一扫关注我们

Powered by 职贝云数A新零售门户 X3.5© 2004-2025 职贝云数 Inc.( 蜀ICP备2024104722号 )