码迷,mamicode.com
首页 > 其他好文 > 详细

pandas_数据拆分与合并

时间:2020-05-07 19:41:58      阅读:262      评论:0      收藏:0      [点我收藏+]

标签:span   user   oss   设置   rand   同名   ilo   平均值   拆分   

import pandas as pd
import numpy as np

# 读取全部数据,使用默认索引
data = pd.read_excel(rC:\Users\lenovo\Desktop\总结\Python\超市营业额.xlsx)

# 修改异常值
data.loc[data.交易额 > 3000,交易额] = 3000
data.loc[data.交易额 < 200,交易额] = 200

# 删除重复值
data.drop_duplicates(inplace = True)
#   inplace 表示对源数据也进行修改
# 填充缺失值
data[交易额].fillna(data[交易额].mean(),inplace = True)

# 使用交叉表得到每人在各柜台交易额的平均值
data_group = pd.crosstab(data.姓名,data.柜台,data.交易额,aggfunc = mean).apply(round)
# 绘制柱状图
data_group.plot(kind = bar)
# <matplotlib.axes._subplots.AxesSubplot object at 0x000001D681607888>


#  数据的合并
data1 = pd.read_excel(rC:\Users\lenovo\Desktop\总结\Python\超市营业额.xlsx)
data2 = pd.read_excel(rC:\Users\lenovo\Desktop\总结\Python\超市营业额.xlsx,sheet_name = Sheet2)
df1 = data1[:3]
‘‘‘
     工号  姓名        日期           时段   交易额   柜台
0  1001  张三  20190301   9:00-14:00  2000  化妆品
1  1002  李四  20190301  14:00-21:00  1800  化妆品
2  1003  王五  20190301   9:00-14:00   800   食品
‘‘‘
df2 = data2[:4]
‘‘‘
     工号  姓名        日期           时段   交易额    柜台
0  1006  钱八  20190301   9:00-14:00   850  蔬菜水果
1  1001  张三  20190302  14:00-21:00   600  蔬菜水果
2  1001  张三  20190302   9:00-14:00  1300   化妆品
3  1002  李四  20190302  14:00-21:00  1500   化妆品
‘‘‘
# 使用 concat 连接两个相同结构的 DataFrame 对象
df3 = pd.concat([df1,df2])
‘‘‘
     工号  姓名        日期           时段   交易额    柜台
0  1001  张三  20190301   9:00-14:00  2000   化妆品
1  1002  李四  20190301  14:00-21:00  1800   化妆品
2  1003  王五  20190301   9:00-14:00   800    食品
0  1006  钱八  20190301   9:00-14:00   850  蔬菜水果
1  1001  张三  20190302  14:00-21:00   600  蔬菜水果
2  1001  张三  20190302   9:00-14:00  1300   化妆品
3  1002  李四  20190302  14:00-21:00  1500   化妆品
‘‘‘
# 合并,忽略原来的索引 ignore_index
df4 = df3.append([df1,df2],ignore_index = True)
‘‘‘
      工号  姓名        日期           时段   交易额    柜台
0   1001  张三  20190301   9:00-14:00  2000   化妆品
1   1002  李四  20190301  14:00-21:00  1800   化妆品
2   1003  王五  20190301   9:00-14:00   800    食品
3   1006  钱八  20190301   9:00-14:00   850  蔬菜水果
4   1001  张三  20190302  14:00-21:00   600  蔬菜水果
5   1001  张三  20190302   9:00-14:00  1300   化妆品
6   1002  李四  20190302  14:00-21:00  1500   化妆品
7   1001  张三  20190301   9:00-14:00  2000   化妆品
8   1002  李四  20190301  14:00-21:00  1800   化妆品
9   1003  王五  20190301   9:00-14:00   800    食品
10  1006  钱八  20190301   9:00-14:00   850  蔬菜水果
11  1001  张三  20190302  14:00-21:00   600  蔬菜水果
12  1001  张三  20190302   9:00-14:00  1300   化妆品
13  1002  李四  20190302  14:00-21:00  1500   化妆品
‘‘‘
# 按照列进行拆分
df5 = df4.loc[:,[姓名,柜台,交易额]]
# 查看前五条数据
df5[:5]
‘‘‘
   姓名    柜台   交易额
0  张三   化妆品  2000
1  李四   化妆品  1800
2  王五    食品   800
3  钱八  蔬菜水果   850
4  张三  蔬菜水果   600
‘‘‘

# 合并 merge 、 join
# 按照工号进行合并,随机查看 3 条数据
rows = np.random.randint(0,len(df5),3)
pd.merge(df4,df5).iloc[rows,:]
‘‘‘
      工号  姓名        日期           时段   交易额   柜台
7   1002  李四  20190301  14:00-21:00  1800  化妆品
4   1002  李四  20190301  14:00-21:00  1800  化妆品
10  1003  王五  20190301   9:00-14:00   800   食品
‘‘‘
# 按照工号进行合并,指定其他同名列的后缀
pd.merge(df1,df2,on = 工号,suffixes = [_x,_y]).iloc[:,:]
‘‘‘
     工号 姓名_x      日期_x         时段_x  ...      日期_y         时段_y 交易额_y  柜台_y
0  1001   张三  20190301   9:00-14:00  ...  20190302  14:00-21:00   600  蔬菜水果
1  1001   张三  20190301   9:00-14:00  ...  20190302   9:00-14:00  1300   化妆品
2  1002   李四  20190301  14:00-21:00  ...  20190302  14:00-21:00  1500   化妆品
‘‘‘
# 两个表都设置工号为索引 set_index
df2.set_index(工号).join(df3.set_index(工号),lsuffix = _x,rsuffix = _y).iloc[:]
‘‘‘
     姓名_x      日期_x         时段_x  交易额_x  ...      日期_y         时段_y  交易额_y  柜台_y
工号                                      ...                                    
1001   张三  20190302  14:00-21:00    600  ...  20190301   9:00-14:00   2000   化妆品
1001   张三  20190302  14:00-21:00    600  ...  20190302  14:00-21:00    600  蔬菜水果
1001   张三  20190302  14:00-21:00    600  ...  20190302   9:00-14:00   1300   化妆品
1001   张三  20190302   9:00-14:00   1300  ...  20190301   9:00-14:00   2000   化妆品
1001   张三  20190302   9:00-14:00   1300  ...  20190302  14:00-21:00    600  蔬菜水果
1001   张三  20190302   9:00-14:00   1300  ...  20190302   9:00-14:00   1300   化妆品
1002   李四  20190302  14:00-21:00   1500  ...  20190301  14:00-21:00   1800   化妆品
1002   李四  20190302  14:00-21:00   1500  ...  20190302  14:00-21:00   1500   化妆品
1006   钱八  20190301   9:00-14:00    850  ...  20190301   9:00-14:00    850  蔬菜水果

‘‘‘

2020-05-07

pandas_数据拆分与合并

标签:span   user   oss   设置   rand   同名   ilo   平均值   拆分   

原文地址:https://www.cnblogs.com/hany-postq473111315/p/12844857.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!