数据来沉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!
|