rechercher et sélectionner les données les plus fréquentes de la colonne dans les pandas DataFrame
J'ai un dataframe avec la colonne suivante:
file['DirViento']
Fecha
2011-01-01 ENE
2011-01-02 ENE
2011-01-03 ENE
2011-01-04 NNE
2011-01-05 ENE
2011-01-06 ENE
2011-01-07 ENE
2011-01-08 ENE
2011-01-09 NNE
2011-01-10 ENE
2011-01-11 ENE
2011-01-12 ENE
2011-01-13 ESE
2011-01-14 ENE
2011-01-15 ENE
...
2011-12-17 ENE
2011-12-18 ENE
2011-12-19 ENE
2011-12-20 ENE
2011-12-21 ENE
2011-12-22 ENE
2011-12-23 ENE
2011-12-24 ENE
2011-12-25 ENE
2011-12-26 ESE
2011-12-27 ENE
2011-12-28 NE
2011-12-29 ENE
2011-12-30 NNE
2011-12-31 ENE
Name: DirViento, Length: 290, dtype: object
La colonne a des registres quotidiens de la direction du vent pour chaque mois de l'année. Je vais essayer d'obtenir l'orientation dominante de chaque mois. Pour ce faire, sélectionnez les données les plus souvent répétés au cours du mois:
file['DirViento'].groupby(lambda x: x.month).value_counts()
1 ENE 23
NNE 6
E 1
ESE 1
2 ENE 21
NNO 3
NNE 2
NE 1
3 ENE 21
OSO 1
ESE 1
SSE 1
4 ENE 21
NNE 2
ESE 1
NNO 1
6 ENE 15
ESE 2
SSE 2
ONO 1
E 1
7 ENE 22
ONO 1
OSO 1
NE 1
NNE 1
NNO 1
8 ENE 23
NNE 5
NE 1
ONO 1
ESE 1
9 ENE 17
NNE 7
ONO 2
NE 1
E 1
ESE 1
NNO 1
10 ENE 16
NNE 2
ESE 2
NNO 2
ONO 1
NE 1
E 1
11 ENE 13
NNE 2
ESE 2
ONO 1
12 ENE 26
NNE 3
NE 1
ESE 1
Length: 54, dtype: int64
Lors de l'exécution de la ligne de code suivante
wind_moda=file['DirViento'].groupby(lambda x: x.month).agg(lambda x: stats.mode(x)[0][0])
Devriez obtenir quelque chose comme ceci
1 ENE
2 ENE
3 ENE
4 ENE
6 ENE
7 ENE
8 ENE
9 ENE
10 ENE
11 ENE
12 ENE
Mais je reçois le texte suivant:
1 E
2 ENE
3 ENE
4 ENE
6 E
7 ENE
8 ENE
9 E
10 E
11 ENE
12 ENE
Pourquoi dans 4 des 12 mois n'est pas en prenant en compte les données les plus fréquentes?
Je fais quelque chose de mal ?
Toute idée d'obtenir le plus de données commune à chaque mois?
- Que voulez-vous arriver si plus d'une direction a la même (maximale) de compter dans un mois donné?
Vous devez vous connecter pour publier un commentaire.
Pandas 0.15.2 a un
DataFrame.mode()
méthode. Il pourrait être utile à quelqu'un à la recherche de ce que j'étais.Voici les docs.
Edit: Pour la Valeur:
Ce n'est pas aussi simple qu'on pourrait (devrait être).
Comme vous le savez probablement, les statistiques jargon, pour la plupart, valeur commune est la "mode". Numpy ne dispose pas d'une fonction intégrée pour cela, mais scipy n'. Importer de la sorte:
Il fait plus que simplement le plus de valeur commune, comme vous pouvez le lire dans les docs, de sorte qu'il est commode de définir une fonction qui utilise
mode
juste d'obtenir le plus de valeur commune.Et maintenant, au lieu de
value_counts()
, utilisezapply(f)
. Voici un exemple:Mise à jour: Scipy est
mode
ne fonctionne pas avec des chaînes. Pour votre chaîne de données, vous aurez besoin de définir un cadre plus général de la fonction mode. Cette réponse devrait faire l'affaire.Pour l'ensemble du dataframe, vous pouvez utiliser:
Pour colonne spécifique:
Deuxième cas est le plus utile dans l'imputation de valeurs.