python数据标准化处理方法,python数据整理实例

  python数据标准化处理方法,python数据整理实例

  数据分析和建模中的大量编程工作用于数据准备:加载、清理、转换和重塑。有时,存储在文件或数据库中的数据不能满足您的数据处理应用程序的要求。

  合并数据集数据库风格的数据框架通过用一个或多个键链接行来合并或联接数据集。这些操作是关系数据库的核心。Pandas的合并功能是将这些算法应用于数据的主要入口。

  在pandas import系列中,DataFrameimport pandas为pddf1=DataFrame({key: [b , b , a , c , a , a , b],range(7)})df2=data frame({ key :[ a , b , d], data 2 :range(3)})print(PD . merge(df1,df2))print(pd.merge(df1,df2,On= key )# output key data 1 data 20B 11 b 12 b 6df1中的数据有多行标记为A和B,而df2中key列的每个值只对应一行。

  如果两个对象的列名不同,也可以分别指定:

  df1=DataFrame({key: [b , b , a , a , a , b], data1 :range(7)})df2=data frame({ key :[ a , b , d],Data2 :range(3)})print(PD . merge(DF1,DF2,left _ on= data1 ,right _ on= Data2 )# output key _ xdata 1 key _ y data 20b 0a 01 B1 b 12a 2d 2默认情况下,merge确实 inner 其他方式有“左”、“右”、“外”。外部连接是键的联合,它结合了左连接和右连接的效果:(多对一的合并)

  print(pd.merge(df1,df2,left_on=data1 ,right_on=data2 ,How= left )# output key _ xdata 1 key _ y data 20 b0a 0.01 b 1.02 a 2d 2.03 C3 nan 4a nan 5a 5 nan 6 b 6 nannan多对多连接产生行的笛卡尔积。原理差不多,就不介绍了。

  索引上的合并PD.merge (left1,right1,left _ on= key ,right _ index=true)轴向连接是缩写的。

  合并数据还有另一个数据组合问题,简单的合并或串联操作无法处理。例如,您可能有两个数据集,它们的索引全部或部分重叠。为了给这个例子增加一点灵感,我们使用NumPy的where函数,它用来表达一个矢量化的if-else:

  临时地

  和重塑轴向旋转,还有很多重新排列表格数据的基本操作。这些功能也称为整形或透视操作。

  重建层次索引层次索引为重新排列数据帧的数据提供了一致的方式。有两个主要功能:

  堆栈:将数据列“旋转”成行。拆分:将数据行“旋转”成列。这个操作前面已经演示过了。此处省略。

  一般来说,DataFrame栈是一系列层次索引,层次索引的系列unstack是一个DataFrame。

  将“长格式”转换为“宽格式”的时间序列数据通常以所谓的“长格式”或“堆叠格式”存储在数据库和CSV中:

  In [116]: ldata[:10]Out[116]:日期项目值0 1959-03-31 00:00:00实际国内生产总值2710.3491 1959-03-31 00:00:00实际国内生产总值2 770 因为固定架构(即列名和数据类型)有一个优点:随着表中数据的增加或删除,item列中值的种类可以增加或者在上面的例子中,date和item通常是主键(就关系数据库而言),这不仅提供了关系完整性,还提供了更简单的查询支持。

  当然也有缺点:长格式的数据可能没那么好操作。您可能更喜欢DataFrame,其中不同的项目值形成一列,日期列中的时间值用作索引。

  DataFrame的pivot方法可以完全实现这种转换:

  In[117]:pivoted=ldata . pivot( date , item , value )In[118]:pivoted . head()Out[118]:item infl real GDP unempdate 1959-03-31 0.00 2710.349 5.81959-06-30 2.34 2778.801 5.11959-09-30 2.74 2775.488 5 5.31959-12

  数据转换会删除重复数据。数据帧中经常出现重复行。这里有一个例子:

  在pandas import系列中,Data Frame import pandas as PD Data=Data Frame({ k1 :[ one ]* 3[ two ]* 4, k2: [1,1,2,3,3,4,4]})print(Data)数据帧的复制方法返回一个与此相关的drop_duplicates方法,该方法用于返回删除了重复行的数据帧。

  print(data . duplicated())print(data . drop _ duplicates())# output 0 false 1 true 2 false 3 false 4 true 5 false 6 true dtype:boolk 1 k2 one 12 one 23 two 35 two 4这两种方法默认会判断所有列,也可以指定一些列来判断重复。假设您还有一列值,并且您只想根据k1列过滤重复项:

  in[130]:data[ v1 ]=range(7)in[131]:data . drop_duplicates([ k1 ])out[131]:k1k2v 10 one 103 tw 33 duplicated和drop _ duplicates是默认情况下出现的第一个值组合。传入take_last=True以保留最后一个:

  在[132]:数据。drop _ duplicates ([k1 , k2],take _ last=true)out[132]:k1k2v 11 one 12 one 2 24 two 3 46 two 4 6使用函数或映射的数据转换在转换数据集时,您可能希望根据数组、系列或DataFrame列中的值来执行。我们来看看以下关于肉类的数据:

  in[133]:data=data frame({ food :[培根,拉猪肉,培根,熏牛肉,咸牛肉,培根,熏牛肉,蜂蜜火腿, nova lox],盎司:[4,3,12,6,7.5,8,3,5,6]}) In [134]: Data Out [134]:食物盎司0培根4.01拉肉3.02培根12.03熏牛肉6.04有角牛肉7.55培根8.06熏牛肉3.07 Honeyham 5.08 Novalox 6.0假设你要添加一个动物类型的列表,表明这种肉的食物来源。让我们先写一个肉到动物的映射:

  meat_to_animal={ bacon :猪,拉猪肉:猪,熏牛肉:牛,蜜汁火腿:猪, nova lox: salmon}系列的map方法可以接受一个函数或者一个有映射关系的词的典型对象,但是这里有一个小问题,就是有些肉的首字母大写,有些不大写。因此,我们还需要将每个值转换成小写:

  在[136]:数据[动物]=数据[食物]。地图(字符串下方)。map(meat _ to _ animal)In[137]:data Out[137]:食物盎司动物0腊肉4.0猪1拉猪肉3.0猪2腊肉12.0猪3熏牛肉6.0牛4咸牛肉7.5牛5腊肉8.0猪6熏牛肉3.0 co W蜂蜜火腿5.0猪8 nova lox 6.0三文鱼替换值用fillna方法填充缺失数据可以视为值替换的特例。尽管上述映射可用于修改对象的数据子集,但replace提供了一种更简单、更灵活的方式来实现这一功能。

  [142]中的#3路:[143]中的data.replace ([-999,-1000],NP . nan):[144]中的data.replace ([-999,-1000],[np.nan,0]):data

  离散化和面元划分简介

  以及检测和过滤异常值以查看包含正态分布数据的数据帧:

  In[170]:NP . random . seed(12345)In[171]:data=data frame(NP . random . randn(1000,4))In[172]:data . describe()Out[172]:0 1 2 3 count 1000.0000000 1000.000000 1000.000000 1000.000000 1000.000.000000 mean-0.067684 0.0678480391 0.654328 Max 3.36626 2.65366 3.260383 3.927528假设你想求绝对值超过3的列中的值:

  in[173]:col=data[3]in[174]:col[NP。ABS(col)3]out[174]:97 3.927528 305-3.399312 400-3.745356名称:3。选择所有包含“大于3或-3

  在[175]:数据[(NP。ABS(数据)3)。Any (1)]排列和随机抽样使用numpy.random.permutation函数,可以很容易地排列数列或数据帧的列。

  临时地

  计算指数/虚拟变量

  字符串操作后更新

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: