nettoyage des données python, fusion, conversion, filtrage, tri des données

高洛峰
Libérer: 2017-02-13 13:34:56
original
1701 Les gens l'ont consulté

Nous avons utilisé des pandas pour effectuer certaines opérations de base plus tôt. Ensuite, nous en apprendrons davantage sur les opérations de données

Le nettoyage des données a toujours été une partie extrêmement importante de l'analyse des données.

Fusion de données

Chez les pandas, les données peuvent être fusionnées via la fusion.

import numpy as np
import pandas as pd
data1 = pd.DataFrame({'level':['a','b','c','d'],
         'numeber':[1,3,5,7]})

data2=pd.DataFrame({'level':['a','b','c','e'],
         'numeber':[2,3,6,10]})
print(data1)
Copier après la connexion

Le résultat est :

python 数据清洗之数据合并、转换、过滤、排序

print(data2)
Copier après la connexion

Le résultat est :

python 数据清洗之数据合并、转换、过滤、排序

print(pd.merge(data1,data2))
Copier après la connexion

Le résultat est :

python 数据清洗之数据合并、转换、过滤、排序

Vous pouvez voir que les champs utilisés pour la même étiquette dans data1 et data2 sont affichés, tandis que les autres champs sont ignorés, ce qui équivaut à l'intérieur rejoindre l'opération de connexion dans SQL.
De plus, il existe des méthodes de connexion telles que externe, ringt, left, etc., qui sont représentées par le mot-clé how.

data3 = pd.DataFrame({'level1':['a','b','c','d'],
         'numeber1':[1,3,5,7]})
data4=pd.DataFrame({'level2':['a','b','c','e'],
         'numeber2':[2,3,6,10]})
print(pd.merge(data3,data4,left_on='level1',right_on='level2'))
Copier après la connexion

Le résultat est :

python 数据清洗之数据合并、转换、过滤、排序

Dans les deux trames de données Si les noms de colonnes sont différents, nous pouvons connecter les données entre elles en spécifiant les deux paramètres letf_on et right_on

print(pd.merge(data3,data4,left_on='level1',right_on='level2',how='left'))
Copier après la connexion

Le résultat est :

python 数据清洗之数据合并、转换、过滤、排序

Autres descriptions détaillées des paramètres

python 数据清洗之数据合并、转换、过滤、排序

Fusion de données qui se chevauchent

Parfois, nous rencontrons des données qui se chevauchent et doivent être fusionnées. Dans ce cas, nous pouvons utiliser la fonction comebine_first.

data3 = pd.DataFrame({'level':['a','b','c','d'],
         'numeber1':[1,3,5,np.nan]})
 data4=pd.DataFrame({'level':['a','b','c','e'],
         'numeber2':[2,np.nan,6,10]})
 print(data3.combine_first(data4))
Copier après la connexion

Le résultat est :

python 数据清洗之数据合并、转换、过滤、排序

Vous pouvez voir le mêmes balises Le contenu ci-dessous affiche d'abord le contenu de data3 Si certaines données d'un bloc de données sont manquantes, les éléments d'un autre bloc de données seront remplis.

L'utilisation ici est similaire à np. .where(isnull(a),b,a)

Remodelage des données et rotation axiale

Nous avons mentionné ce contenu dans l'article précédent sur les pandas . Le remodelage des données utilise principalement la fonction de remodelage, et la rotation utilise principalement les fonctions de dépilage et de pile.

data=pd.DataFrame(np.arange(12).reshape(3,4),
       columns=['a','b','c','d'],
       index=['wang','li','zhang'])
print(data)
Copier après la connexion

Le résultat est :

python 数据清洗之数据合并、转换、过滤、排序

print(data.unstack())
Copier après la connexion

Le résultat est :

python 数据清洗之数据合并、转换、过滤、排序

Conversion de données

Supprimer les données de ligne en double

data=pd.DataFrame({'a':[1,3,3,4],
       'b':[1,3,3,5]})
print(data)
Copier après la connexion

Le résultat est :

python 数据清洗之数据合并、转换、过滤、排序

print(data.duplicated())
Copier après la connexion

Le résultat est :

python 数据清洗之数据合并、转换、过滤、排序

On peut voir que la troisième ligne répète les données de la deuxième ligne, donc l'affichage le résultat est vrai

另外用drop_duplicates方法可以去除重复行

print(data.drop_duplicates())
Copier après la connexion

结果为:
python 数据清洗之数据合并、转换、过滤、排序

替换值

除了使用我们上一篇文章中提到的fillna的方法外,还可以用replace方法,而且更简单快捷

data=pd.DataFrame({'a':[1,3,3,4],
       'b':[1,3,3,5]})
print(data.replace(1,2))
Copier après la connexion

结果为:

python 数据清洗之数据合并、转换、过滤、排序

多个数据一起换

print(data.replace([1,4],np.nan))
Copier après la connexion

python 数据清洗之数据合并、转换、过滤、排序

数据分段


data=[11,15,18,20,25,26,27,24]
bins=[15,20,25]
print(data)
print(pd.cut(data,bins))
Copier après la connexion

结果为:
[11, 15, 18, 20, 25, 26, 27, 24][NaN, NaN, (15, 20], (15, 20], (20, 25], NaN, NaN, (20, 25]]
Categories (2, object): [(15, 20] < (20, 25]]

可以看出分段后的结果,不在分段内的数据显示为na值,其他则显示数据所在的分段。

print(pd.cut(data,bins).labels)
Copier après la connexion

结果为:

[-1 -1 0 0 1 -1 -1 1]

显示所在分段排序标签

print(pd.cut(data,bins).levels)
Copier après la connexion

结果为:

Index([‘(15, 20]', ‘(20, 25]'], dtype='object')

显示所以分段标签

print(value_counts(pd.cut(data,bins)))
Copier après la connexion

结果为:

python 数据清洗之数据合并、转换、过滤、排序

显示每个分段值得个数

此外还有一个qcut的函数可以对数据进行4分位切割,用法和cut类似。

排列和采样

我们知道排序的方法有好几个,比如sort,order,rank等函数都能对数据进行排序
现在要说的这个是对数据进行随机排序(permutation)

data=np.random.permutation(5)
print(data)
Copier après la connexion

结果为:

[1 0 4 2 3]

这里的peemutation函数对0-4的数据进行随机排序的结果。
也可以对数据进行采样

df=pd.DataFrame(np.arange(12).reshape(4,3))
samp=np.random.permutation(3)
print(df)
Copier après la connexion

结果为:

python 数据清洗之数据合并、转换、过滤、排序

print(samp)

结果为:
[1 0 2]

print(df.take(samp))

结果为:

python 数据清洗之数据合并、转换、过滤、排序

这里使用take的结果是,按照samp的顺序从df中提取样本。

更多python 数据清洗之数据合并、转换、过滤、排序相关文章请关注PHP中文网!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal