python数据分析数据清洗,python中数据清洗
一:删除重复数据。
DataFrame通常有重复的行,如下图所示。
in[7]:data=data frame({ k1 :[ one ]* 3[ two ]* 4, k2:[1,1,2,3,3,4,4]})
[8]:数据
Out[8]:
k1k2
0one1
1一个1
2one2
3two3
4two3
5two4
6two4
duplicated方法可以确定每一行是否重复。
In[9]:data.duplicated()
Out[9]:
0错误
1真实
2错误
3错误
4真
5错误
6真
dtype:bool
既然我们可以判断重复,我们也可以丢弃这些重复。
In[11]:data.drop_duplicates()
Out[11]:
k1k2
0one1
2one2
3two3
5two4
这种丢弃适用于的所有列,或者您可以指定某一列。
in[12]:data . drop _ duplicates( k1 )
Out[12]:
k1k2
0one1
3two3
2.使用函数或映射进行数据转换
当转换数据集时,我们希望转换列中的值。可以使用映射方法进行转换。
in[13]:data=data frame({ food :[ bacon , pulledpork , bacon , Pastrami , corne
.dbeef ,培根,熏牛肉,蜂蜜火腿,诺瓦洛克斯],盎司:[4,3,12,6,7
.5,8,3,5,6]})
[14]:数据
Out[14]:
食物盎司
0bacon4.0
1pulledpork3.0
2bacon12.0
3平台6.0
4cornedbeef7.5
5Bacon8.0
6熏牛肉3.0
7蜂蜜酒5.0
8novalox6.0
对于上述几类肉类,如果要指明哪些动物是从它们那里获得的,就要写一个肉类到动物的映射。首先,完成一个映射表。
in[15]:meat _ to _ animal={ bacon : pig , pulled work : pig , pastrami:ciw , cor
.nedbeef:cow , honeyham:pig , novalox:salmon}
然后贴图,首先把所有的肉都转换成小写字母,然后用meat_to_animal贴图。
在[16]:数据[动物]=数据[食物]。地图(字符串下方)。地图(肉类到动物)
[17]:数据
Out[17]:
食品动物
0培根4.0猪
1 pulled por 3.0 pig
2bacon12.0pig猪
3Pastrami6.0ciw
4角7.5牛
5Bacon8.0pig猪
6熏牛肉3.0ciw
7蜂蜜火腿5.0猪
8诺瓦洛克斯6.0鲑鱼
三重替代值
Fillna的方法是在前面部分填充数据时使用的。但实际上使用replace方法更简单。
例如,在下面的数据中,-000是无效数据。直接用替换的方式替换。
在[18]中:数据=系列([1,-000,2,3,4])
[19]:数据
Out[19]:
01
10
22
33
四十四
dtype:int64
In[20]:data.replace(-000,np.nan)
Out[20]:
01.0
1南
22.0
33.0
44.0
数据类型:float64
四维离散化和面元划分
为了分析,往往需要将数据拆分成不同的数据,也就是离散化。
在[21]:年龄=[20,22,25,27,21,23,37,31,61,45,41,32]
在[22]中:bin=[18,25,35,60,100]
In[23]:cats=pd.cut(年龄,箱)
[24]:猫
Out[24]:
[(18,25],(18,25],(18,25],(25,35],(18,25],(25,35],(60,100],(35,60],(35,60],(25,35]]
长度:12
Categories(4,interval[int64]):[(18,25]
获得的数据是各自的间隔。但这样观察数据不方便,标注每个区间更直观。
In[25]:group_name=[青年,青年成人,中年,老年人]
in[27]:cats=PD . cut(age,bin,labels=group_name)
[28]:猫
Out[28]:
[青年,青年,青年,青年成人,青年,年轻人,老年人,中年人,中年人,年轻人
长度:12
类别(4,对象):[青年
如果切割传递的是条柱的数量,而不是条柱的确切边界,则等长条柱将根据最小值和最大值进行计算。例如,下面的数据将一些统一的数据分为四组。
In[29]:data=np.random.rand(20)
In[30]:pd.cut(数据,4,精度=2)
Out[30]:
[(0.77,0.97],(0.15,0.36],(0.15,0.36],(0.15,0.36],(0.77,0.97],(0.56,0.77],(0.15,0.36],(0.15,0.36],(0.77,0.97],(0.77,0.97]]
长度:20
Categories(4,interval[float64]):[(0.15,0.36]
In[32]:group=[第一,第二,第三,第四]
In[33]:pd.cut(数据,4,精度=2,标签=组)
Out[33]:
【第四,第一,第一,第一,第四,第三,第一,第一,第四,第四]
长度:20
类别(4,对象):[第一个
5.检测和过滤异常值。
例如,以下四列包含正态分布的数据。通过描述,我们可以得到各种数据值,如期望值、方差、四分位数等。
in[35]:data=data frame(NP . random . randn(1000,4))
[36]:data.describe()
Out[36]:
0123
计数1000.00000001000.0000000001.0000000005
平均值为-0.06767675866
性传播疾病0 .59860 .88888888681
最小为3.428254-3.548824-3.184853546
25%-0.774890-0.591841-0.641675-0.644144
50%-0.1164010.1011430.002073-0.013611
75%0.6163660.7802820.6803910.654328
最大值3。38660 .68868886861
六排列和随机采样
利用随机排列函数可以轻松实现对系列和数据帧的列的重排工作
在[37]:df=数据帧(NP。大小为5 * 4 .整形(5,4))
在[38]:df
Out[38]:
0123
00123
14567
2891011
312131415
416171819
[41]:采样器
Out[41]:数组([1,0,2,3,4])
在[39]中:采样器=np随机排列(5)
可以看到根据刺绣样本提供的行索引顺序对数据进行了重排
In[40]:df.take(采样器)
Out[40]:
0123
14567
00123
2891011
312131415
416171819
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。