loc函数、iloc函数、df.drop()函数的用法

本文详细介绍了Pandas库中loc和iloc函数的使用方法,包括通过行索引和列标签选取数据,以及结合使用选取特定行和列。同时,讲解了drop函数的参数和用法,展示了如何删除数据框中的行和列,包括按标签和按位置删除。实例演示了删除特定行和列的操作,并对比了不同删除方式的结果。

1.loc函数、iloc函数

loc函数:通过行索引 “Index” 中的具体值来取行数据(如取"Index""A"的行)

iloc函数:通过行号来取行数据(如取第二行的数据)
df = pd.DataFrame(np.arange(20).reshape(5,4),index=list('abcde'),columns=['A', 'B', 'C', 'D'])
######### 提取行数据############
#取索引为'a'的行
df.loc['a']
# 输出:
A    0
B    1
C    2
D    3

#取第二行数据,索引为'a'的行就是第一行,所以结果相同
df.iloc[1]
# 输出:
A    4
B    5
C    6
D    7
######### 提取列数据############
#取AB列的数据
df.loc[:,['A','B']] 
# 输出:

    A	B
a	0	1
b	4	5
c	8	9
d	12	13
e	16	17

#取第0,1列的数据
df.iloc[:,[0,1]] 
# 输出:

    A	B
a	0	1
b	4	5
c	8	9
d	12	13
e	16	17

######### 提取指定行、指定列数据############
#提取index为'c','d',列名为'A','B'中的数据
df.loc[['c','d'],['A','B']] 

# 输出:
	A	B
c	8	9
d	12	13

#提取第02行,第01列中的数据
df.iloc[[0,2],[0,1]]

# 输出:
	A	B
a	0	1
c	8	9

######### 提取所有数据############
#取所有列的数据
df.loc[:,:] 

# 输出:
	A	B	C	D
a	0	1	2	3
b	4	5	6	7
c	8	9	10	11
d	12	13	14	15
e	16	17	18	19

#取所有行数据
df.iloc[:,:] 
# 输出:
	A	B	C	D
a	0	1	2	3
b	4	5	6	7
c	8	9	10	11
d	12	13	14	15
e	16	17	18	19

2.drop()函数的用法

'''
drop()函数的用法:
DataFrame.drop(labels=None,axis=0, index=None, columns=None, inplace=False)

labels:就是要删除的行列的名字,用列表给定
axis:默认为 0,指删除行,因此删除 columns 时要指定 axis=1;
index:直接指定要删除的行
columns:直接指定要删除的列
inplace=False : 默认该删除操作不改变原数据,而是返回一个执行删除操作后的 新 dataframe;
inplace=True : 则会直接在原数据上进行删除操作,删除后无法返回。

'''
df = pd.DataFrame(np.arange(20).reshape(5,4), columns=['A', 'B', 'C', 'D'])
# 删除B,C两列
# 方法一:
df.drop(['B', 'C'], axis=1) #一定要指定axis=1,否则会报错,因为drop默认是删除行数据的
# 方法二:
df.drop(columns=['B', 'C'])

# 删除B,C两列输出结果:
	A	D
0	0	3
1	4	7
2	8	11
3	12	15
4	16	19

# 删除索引值为13的行数据
df.drop(index=[1, 3])

# 输出结果:
	A	B	C	D
0	0	1	2	3
2	8	9	10	11
4	16	17	18	19


drop()函数删除指定的行,按照某列的值对df数据行的索引进行筛选并删除
例如:剔除3分的中性评论

// An highlighted block
df[df['score'] == 3] # 找到score这一列中值为3的所有行数据
写法1:
df = df.drop(df[df['Score']==3].index)
写法2:
df=df[df['Score']!=3]

一个表中含有很多的列,我想要删除其中指定的几列’Id’, ‘ProductId’, 'UserId’

df = df.drop(['Id', 'ProductId', 'UserId'],axis=1)
🐼 Pandas 数据操作完整流程指南 📁 一、数据输入与输出 1.1 数据导入 # 从各种格式导入数据 pd.read_csv(filename) # CSV文件 pd.read_excel(filename) # Excel文件 pd.read_sql(query, connection_object) # SQL数据库 pd.read_json(json_string) # JSON格式 pd.read_html(url) # HTML网页表格 pd.read_clipboard() # 从剪贴板 1.2 数据导出 # 保存到各种格式 df.to_csv(filename) # CSV文件 df.to_excel(filename) # Excel文件 df.to_sql(table_name, connection_object) # SQL数据库 df.to_json(filename) # JSON格式 🔍 二、数据查看与探索 2.1 基本信息查看 df.head(n) # 查看前n行 df.tail(n) # 查看后n行 df.shape # 获取维度(行数, 列数) df.info() # 查看索引、数据类型、内存信息 df.describe() # 数值型列汇总统计 2.2 统计信息 df.mean() # 各列均值 df.max() # 各列最大值 df.min() # 各列最小值 df.std() # 各列标准差 df.median() # 各列中位数 df.corr() # 列之间的相关系数 2.3 值计数 s.value_counts(dropna=False) # 查看唯一值和计数 df.apply(pd.Series.value_counts) # 各列的值计数 🧹 三、数据清理 3.1 缺失值处理 df.dropna() # 删除包含缺失值的行 df.dropna(axis=1) # 删除包含缺失值的列 df.dropna(thresh=n) # 每行至少保留n个非空值 df.fillna(x) # 用x替换所有缺失值 3.2 数据类型转换 s.astype(float) # 将Series转换为浮点型 df['column'].astype(int) # 将指定列转换为整型 3.3 值替换 s.replace(1, 'one') # 替换单个值 s.replace([1, 3], ['one', 'three']) # 批量替换 3.4 重命名操作 df.columns = ['a', 'b', 'c'] # 重命名所有列 df.rename(columns={'old': 'new'}) # 重命名特定列 df.rename(index={0: 'first'}) # 重命名索引 🔧 四、数据处理与转换 4.1 数据排序 df.sort_values('col1') # 按col1升序 df.sort_values('col1', ascending=False) # 按col1降序 df.sort_values(['col1', 'col2']) # 多列排序 4.2 数据分组聚合 df.groupby('col1') # 按单列分组 df.groupby(['col1', 'col2']) # 按多列分组 df.groupby('col1')['col2'].mean() # 分组后计算平均值 df.groupby('col1').agg(np.mean) # 分组后聚合计算 4.3 数据透视表 df.pivot_table(index='col1', values='col2', aggfunc='mean') # 创建数据透视表 4.4 应用函数 df.apply(np.mean) # 对每列应用函数 df.apply(lambda x: x.max() - x.min()) # 应用lambda函数 🔗 五、数据合并与连接 5.1 数据拼接 pd.concat([df1, df2]) # 纵向连接 pd.concat([df1, df2], axis=1) # 横向连接 df1.append(df2) # 追加行 5.2 数据连接 df1.join(df2, on=col1, how='inner') # SQL风格的连接 🎯 六、数据选择与索引 6.1 列选择 df['column'] # 选择单列 df[['col1', 'col2']] # 选择多列 6.2 行选择 df[df['column'] > 0.5] # 条件筛选 💡 七、快速创建测试数据 # 创建20行5列的随机DataFrame df = pd.DataFrame(np.random.rand(20,5)) 📊 八、工作流程总结 标准数据处理流程: 1. 数据导入 → 2. 初步查看 → 3. 数据清理 → 4. 数据处理 → 5. 数据分析 → 6. 结果导出 关键要点: 面向列的操作:Pandas设计理念是列优先操作 链式调用:支持方法链式调用,代码更简洁 索引机制:.loc[](标签索引)和.iloc[](位置索引)是核心 向量化计算:避免循环,利用向量化运算提高效率 缺失值处理:始终优先处理缺失值,避免后续分析错误 🚀 九、实用技巧 使用.copy()防止修改原始数据 善用.query()方法进行复杂条件筛选 使用.pipe()进行链式函数调用 注意.apply()与向量化方法的性能差异 这个流程化的知识结构覆盖了Pandas数据处理的主要环节,从数据获取到最终输出,形成了一个完整的工作闭环。 根据以上内容,举例,用最易懂的方法让我会,出题并解答
最新发布
12-15
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值