空枝|使用Pandas数据处理与分析( 二 )
该函数主要用于通过一个或多个键将两个数据集的行连接起来 , 类似于 SQL 中的 JOIN 。 典型应用场景是 , 针对同一个主键存在两张包含不同字段的表 , 现在我们想把他们整合到一张表里 。 在此典型情况下 , 结果集的行数并没有增加 , 列数则为两个元数据的列数和减去连接键的数量 。
2.pandas.concat该方法相当于数据库中的全连接(UNION ALL),可以指定按某个轴进行连接,也可以指定连接的方式join(outer,inner 只有这两种) 。 与数据库不同的是concat不会去重 , 要达到去重的效果可以使用drop_duplicates方法 。
pandas.concat(objs, axis=0, join='outer', join_axes=None, ignore_index=False, keys=None,levels=None, names=None,verify_integrity=False, sort=None, copy=True)
轴向连接pd.concat()只是单纯的把两个表拼在一起 , 这个过程也被称作连接(concatenation) 。 这个函数的关键参数应该是 axis , 用于指定连接的轴向 。 在默认的 axis=0 情况下 , pd.concat([data1 , data2])函数的效果与data1.append(data2)是相同的;而在 axis=1 的情况下 , pd.concat([data1,data2],axis=1)的效果与pd.merge(data1,data2,left_index=True,right_index=True,how='outer')是相同的 。 可以理解为 concat 函数使用索引作为“连接键” 。
3.join方法提供了一个简便的方法用于将两个DataFrame中的不同的列索引合并成为一个DataFrame 。
DataFrame.join(other, on=None, how='left', lsuffix='', rsuffix='', sort=False)
其中参数的意义与merge方法基本相同,只是join方法默认为左外连接how=left 。
4.DataFrame.combine_first(other)可以将重复数据拼接在一起 , 用一个对象中的值填充另一个对象中的缺失值 。
5.update如果要用一张表中的数据来更新另一张表的数据则可以用update来实现
DataFrame.update(other, join='left', overwrite=True, filter_func=None, raise_conflict=False)
注:使用combine_first会只更新左表的nan值 。 而update则会更新左表的所有能在右表中找到的值(两表位置相对应) 。
具体了解可以在pandas官网上自行查阅 , 或者可以再Jupyter Notebook 中采用help()命令查阅 。
(2) 数据清洗数据整理
1.字符串处理
原始数据中 , 有很多字符串类型的数据 , 不便于分析 , 利用字符串函数对数据进行处理 。
#拆分“当前时间”变得标准化data['当前时间']=data['当前时间'].str.split(' ',expand=True)[0]#将“收藏”字符串中的数值型数据取出来data['收藏']=data['收藏'].str.extract('(\d+)')#同理“库存”只要数据data['库存']=data['库存'].str.extract('(\d+)')#同理“天猫积分”只要数据data['天猫积分']=data['天猫积分'].str.extract('(\d+)')#“现价”中含有区间值 , 进行拆分 , 并取最低价data['现价']=data['现价'].str.split('-',expand=True)[0]#同理 , “原价”拆分 , 与“现价”保持一致data['原价']=data['原价'].str.split('-',expand=True)[0]
2.数据类型处理
将处理完的字符串数据 , 转换成有利于后续分析的数据 。
#时间序列处理data['当前时间']=pd.to_datetime(data['当前时间'])#数据类型处理data['现价']=data['现价'].astype(np.float64) data['原价']=data['原价'].astype(np.float64) data['收藏']=data['收藏'].astype(np.float64) data['库存']=data['库存'].astype(np.float64) data['天猫积分']=data['天猫积分'].astype(np.float64)
缺失值处理:
1.查找缺失值 。 看那些列存在缺失值:
data.isnull().any()
2.定位缺失值 。 将含有缺失值的行筛选出来:
- 美食工坊|而有一个很唯美的名字,日本仍保留使用,古代的苹果不叫“苹果”
- 皮肤|CSGO:最贵皮肤无一入选?这几款手感满分,更适合USP使用
- 军事|外媒关注中国发射“可重复使用试验航天器”:保密程度高于常规
- 医保基金|山东通报16起医保基金违规使用或欺诈骗保典型案例 涉违规收费等问题
- 央视新闻客户端|支持世界田联反兴奋剂新计划 肯尼亚拟定使用兴奋剂违法
- 客货运输|中国民航局拟批准东方航空独资筹建一二三航空 使用ARJ21-700飞机
- 经营|中国民航局拟批准东方航空独资筹建一二三航空 使用ARJ21-700飞机
- 幼儿园不得教授小学教育内容|学前教育法草案:幼儿园不得使用教科书 不得教授小学教育内容
- 「幼儿园不得教授小学教育内容」学前教育法草案:幼儿园不得使用教科书 不得教授小学教育内容
- 幼儿园|学前教育法草案:幼儿园不得使用教科书,不得教授小学教育内容