pandas数据变换(一)

1.删除重复值

import numpy as np
import pandas as pd

data=pd.DataFrame({'k1':['one','two']*3+['two'],'k2':[1,1,2,3,3,4,4]})
print(data)

#输出:
 k1  k2
0  one   1
1  two   1
2  one   2
3  two   3
4  one   3
5  two   4
6  two   4

DataFrame的duplicated()方法会返回一个布尔类型的Series,默认判断每行是否重复,根据的是前一行来判断是否重复

print(data.duplicated())

#输出:
0    False
1    False
2    False
3    False
4    False
5    False
6     True
dtype: bool

#DataFrame的drop_duplicates()会删除重复的部分,返回一个新的DataFrame,这里重复的部分表明是row index 为6的行
#记住这里其实不是上面那个duplicated,它是将duplicated中的d 改为了s
print(data.drop_duplicates())

#输出:
 k1  k2
0  one   1
1  two   1
2  one   2
3  two   3
4  one   3
5  two   4

上面的方法都有一个弊端就是考虑到了所有的列,可以指定一部分的数据来检测重复值.

data['v1']=range(7) #range()为python自带的生成数字的函数
print(data)
print(data.drop_duplicates(['k1'])) #这里指定删除‘k1’列中的所有重复值,因为默认删除的是行,所以保留的是k1中没有重复值的行

#输出:
   k1  k2  v1
0  one   1   0
1  two   1   1
2  one   2   2
3  two   3   3
4  one   3   4
5  two   4   5
6  two   4   6
    k1  k2  v1
0  one   1   0
1  two   1   1

duplicated()和drop_duplicates()默认是保留第一次观测到的数据的组合,意思就是如果下一行是重复的和第一次观测到的重复的。那么就去掉下一行的数据,而duplicated()就会在下一行观测到的重复数据标记为True。而传入参数keep=‘last’就会保留最后一行。

print(data.duplicated(['k1','k2'],keep='last'))
print(data.drop_duplicates(['k1','k2'],keep='last'))

#输出:
0    False
1    Fals
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Pandas 中,数据变换是指对数据进行一系列操作,以得到需要的结果。常用的 Pandas 数据变换包括: 1. 数据筛选 数据筛选是指根据条件进行数据的过滤,只保留符合条件的数据Pandas 中可以使用布尔索引和 query() 函数进行数据筛选。 例如,对于一个包含学生信息的 DataFrame,可以使用以下代码筛选出年龄在 18 到 22 岁之间的数据: ```python import pandas as pd # 创建 DataFrame data = {'name': ['Alice', 'Bob', 'Charlie', 'David', 'Emily'], 'age': [25, 20, 30, 35, 22], 'score': [98, 85, 92, 75, 88]} df = pd.DataFrame(data) # 数据筛选 df_filtered = df[(df['age'] >= 18) & (df['age'] <= 22)] ``` 2. 数据排序 数据排序是指根据指定的列对数据进行排序。Pandas 中可以使用 sort_values() 函数进行数据排序。 例如,对于一个包含学生信息的 DataFrame,可以使用以下代码对年龄进行升序排序: ```python import pandas as pd # 创建 DataFrame data = {'name': ['Alice', 'Bob', 'Charlie', 'David', 'Emily'], 'age': [25, 20, 30, 35, 22], 'score': [98, 85, 92, 75, 88]} df = pd.DataFrame(data) # 数据排序 df_sorted = df.sort_values(by='age') ``` 3. 数据聚合 数据聚合是指根据指定的列对数据进行分组,并对每组数据进行统计分析。Pandas 中可以使用 groupby() 函数进行数据聚合。 例如,对于一个包含学生信息的 DataFrame,可以使用以下代码对不同年龄段的学生进行平均成绩统计: ```python import pandas as pd # 创建 DataFrame data = {'name': ['Alice', 'Bob', 'Charlie', 'David', 'Emily', 'Frank'], 'age': [25, 20, 30, 35, 22, 20], 'score': [98, 85, 92, 75, 88, 90]} df = pd.DataFrame(data) # 数据聚合 df_grouped = df.groupby('age')['score'].mean() ``` 在以上代码中,首先使用 groupby() 函数按年龄进行分组,然后对每组数据的成绩进行平均值计算。 4. 数据透视表 数据透视表是指将数据按照指定的行和列进行汇总,并对每个汇总单元格进行统计分析。Pandas 中可以使用 pivot_table() 函数进行数据透视表的创建。 例如,对于一个包含学生信息的 DataFrame,可以使用以下代码创建一个按照年龄和成绩进行汇总的数据透视表: ```python import pandas as pd # 创建 DataFrame data = {'name': ['Alice', 'Bob', 'Charlie', 'David', 'Emily', 'Frank'], 'age': [25, 20, 30, 35, 22, 20], 'score': [98, 85, 92, 75, 88, 90]} df = pd.DataFrame(data) # 创建数据透视表 df_pivot = pd.pivot_table(df, values='score', index='age', columns='name', aggfunc='mean') ``` 在以上代码中,使用 pivot_table() 函数创建一个以年龄为行,姓名为列,成绩为值的数据透视表,其中 aggfunc 参数指定对每个汇总单元格进行平均值计算。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值