python-pandas方法示例
·
##去重函数的使用
import pandas as pd
df=pd.DataFrame({'A':[1,2,3,4,5,1,2,3,4,5],'B':[1,2,3,4,5,1,2,3,2,1]})
print(df.drop_duplicates())##一条记录完全一样才会去重
print(df.drop_duplicates(subset=['A']))##A列一样的记录就会被消除而不是全部一样才消除
print(df.drop_duplicates(subset=['A'],keep='last'))##相同的数据保留最后一条,不写默认是保留最前面的那一条
##数据类型转换
df['A']=df['A'].astype('int16')##选中本列,并对本列进行astype函数,括号中写上想变换为的数据类型
df.dtypes##查看数据类型
##选择器类型
df1=pd.DataFrame({
'name':['张三-1','李四-2','王五-3'],
'age':[18,19,20],
'sex':['男','女','男']
})
# ##category是选择器类型适用于某一列的值只有几个选项时使用
df1['sex']=df1['sex'].astype('category')
df1['sex']=df1['sex'].map({'男':True,'女':False})##map是映射函数,可以将某一列的值映射为我们设定的值:用字典完成即可
df1
# ##表格式转换:宽表变长表
df2=pd.melt(df1,id_vars=['name'],var_name='基本信息',value_name='值')
df2.sort_values('name')
# ##长表变宽表
df3=pd.pivot(df2,index=['name'],columns='基本信息',values='值')
df3
# ##数据分列:将一列数据分开为多列放到表中
df1[['name','num']]=df1['name'].str.split('-',expand=True)##str为选择器,是为了对表中数据进行字符串操作,
# 注意使用.str选择器后就可以对其中数据进行字符串的操作,expand表示将分开的数据扩展到多列
df1['num']=df1['num'].astype('int64')#注意使用str选择器后获得都是字符串,当需要数字类型时要单独转换
df1
##数据分箱:分连续数据
df=pd.DataFrame({
'name':['张三-1','李四-2','王五-3','赵六-4','孙七-5'],
'salary':[1000,2000,3000,4000,5000]
})
df['收入等级']=pd.cut(df['salary'],bins=3,labels=['低','中','高'])##指定分段个数
df['收入等级']=pd.cut(df['salary'],bins=[0,2500,4500,5500],labels=['低','中','高'])##自己指定区间
df['收入等级']=pd.qcut(df['salary'],3,labels=['低','中','高'])##进行等数划分,即每个区间内划分的人数尽可能相等,这时不能自己指定区间了
df
# #将某一列设置为索引
df.set_index('name',inplace=True)##inplace表示将结果直接保存在原数据中
df.reset_index(inplace=True)##将索引还原为原来设置的索引即消除上一行的操作
df.rename(columns={'name':'名字'},index={0:'第一个'},inplace=True)##仅仅修改列名和索引名
df
# ##数据分组
df=pd.DataFrame({
'name':['张三-1','张三-2','张三-3','张三-4','张三-5','张三-6','张三-7','张三-8','张三-9','张三-10'],
'salary':[1000,2000,3000,4000,5000,6000,7000,8000,9000,10000],
'sex':['男','女','男','女','男','女','男','女','男','女']
})
df.groupby('sex').groups##查看分组结果
df.groupby('sex').get_group('男')#获取某一个分组的情况
df.groupby('sex')['salary'].mean()##计算分组后,指定字段的统计值
df.groupby(['sex','name'])['salary'].mean()##选多组数据进行分组:即sex和name都一样才会分为一组
df.groupby(['sex','name']).agg({
'salary':['mean','std','count']
})##按照sex和name分组后计算salary这一列的均值,标准差,数量
更多推荐
所有评论(0)