pandas的基本操作

pandas的基本操作

1.获取数据

import pandas as pd
import numpy as np
df = pd.DataFrame(data = np.random.randint(0,100,size = [20,3]),
 				columns=['math','english','language']) # 创建20行数据
df['math'] # 获取单列,Series
df.math # 获取单列,Series
df[3:15] # ⾏切⽚,DataFrame

DataFrame获取多列, 工作中用的较多

df[['math','english']] # DataFrame格式

2.boolean索引

import pandas as pd
import numpy as np
df = pd.DataFrame(data = np.random.randint(0,100,size = [10,3]),
				index = list('ABCDEFGHIJ'), # ⾏标签
 				columns=['math','english','language']) # 创建20行数据
# 判断math分数是否⼤于80,返回值是boolean类型的Series
# 返回math分数⼤于80分的⽤户所有考试科⽬数据
df[df.math>80]

# &与运算 返回math和english同时⼤于50分的⽤户的所有考试科⽬数据
df[(df.math > 50) & (df['english'] > 50)] 

# 选择DataFrame中满⾜条件的值,如果满⾜返回值,不然返回空数据NaN
df[df > 50]

3.concat数据串联

import pandas as pd
import numpy as np
df1 = pd.DataFrame(data = np.random.randint(0,100,size = [10,3]),
				index = list('ABCDEFGHIJ'), # ⾏标签
 				columns=['math','english','language']) # 创建20行数据
df2 = pd.DataFrame(data = np.random.randint(0,100,size = [10,3]),
				index = list('KLMNOPQRST'), # ⾏标签
 				columns=['math','english','language']) # 创建20行数据
df3 = pd.DataFrame(data = np.random.randint(0,100,size = (10,2)),
 				index = list('ABCDEFGHIJ'),
 				columns=['PyTorch','Paddle'])
 				
# df1和df2⾏串联,列要一样,df2的⾏追加df1⾏后⾯ 建议用这种			
pd.concat([df1,df2],axis = 0) 
# 在df1后⾯追加df2 
df1.append(df2) 

# df1和df2列串联,行要一样,df2的列追加到df1列后⾯
pd.concat([df1,df3],axis = 1) 

4. Join SQL⻛格合并

数据集的合并(merge)或连接(join)运算是通过⼀个或者多个键将数据链接起来的。这些运算是关
系型数据库的核⼼操作。pandas的merge函数是数据集进⾏join运算的主要切⼊点。

import pandas as pd
import numpy as np
# 表⼀中记录的是name和体重信息
df1 = pd.DataFrame(data = {'name': ['softpo','Daniel','Brandon','Ella'],'weight':[70,55,75,65]})
# 表⼆中记录的是name和身⾼信息
df2 = pd.DataFrame(data = {'name': ['softpo','Daniel','Brandon','Cindy'],'height':[172,170,170,166]})
df3 = pd.DataFrame(data = {'名字': ['softpo','Daniel','Brandon','Cindy'],'height':[172,170,170,166]})

# 根据共同的name将俩表的数据,进⾏合并
# 内合并代表两对象交集
pd.merge(df1,df2, how = 'inner', on = 'name')

pd.merge(df1,df3,
 how = 'outer',# 全外连接,两对象并集
 left_on = 'name',# 左边DataFrame使⽤列标签 name进⾏合并
 right_on = '名字')# 右边DataFrame使⽤列标签 名字进⾏合并
 
# 创建10名学⽣的考试成绩
df4 = pd.DataFrame(data = np.random.randint(0,151,size = (10,3)),
 index = list('ABCDEFHIJK'),
 columns=['Python','Keras','Tensorflow'])
 
# 计算每位学⽣各科平均分,转换成DataFrame
score_mean = pd.DataFrame(df4.mean(axis = 1).round(1),columns=['平均分'])

# 将平均分和df3使⽤merge进⾏合并,它俩有共同的⾏索引
pd.merge(left = df4,right = score_mean,
 left_index=True,# 左边DataFrame使⽤⾏索引进⾏合并
 right_index=True)# 右边的DataFrame使⽤⾏索引进⾏合并

5.数据清洗

import numpy as np
import pandas as pd
df = pd.DataFrame(data = {'color': ['red','blue','red','green','blue',None,'red'],
 'price':[10,20,10,15,20,0,np.NaN]})
 
# 1、重复数据过滤
df.duplicated() # 判断是否存在重复数据
df.drop_duplicates() # 删除重复数据

# 2、空数据过滤
df.isnull() # 判断是否存在空数据,存在返回True,否则返回False
df.dropna(how = 'any') # 删除空数据
df.fillna(value=1111) # 填充空数据

# 3、指定⾏或者列过滤
del df['color'] # 直接删除某列
df.drop(labels = ['price'],axis = 1)# 删除指定列
df.drop(labels = [0,1,5],axis = 0) # 删除指定⾏

# 4、函数filter使⽤
df = pd.DataFrame(np.array(([3,7,1], [2, 8, 256])),
 index=['dog', 'cat'],
 columns=['China', 'America', 'France'])
df.filter(items=['China', 'France'])
# 根据正则表达式删选列标签
df.filter(regex='a$', axis=1)
# 选择⾏中包含og
df.filter(like='og', axis=0)

# 5、异常值过滤
df2 = pd.DataFrame(data = np.random.randn(10000,3)) # 正态分布数据
# 3σ过滤异常值,σ即是标准差
cond = (df2 > 3*df2.std()).any(axis = 1)
index = df2[cond].index # 不满⾜条件的⾏索引
df2.drop(labels=index,axis = 0) # 根据⾏索引,进⾏数据删除
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

曾晶的总结

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值