Nous avons résumé les grammaires qui sont souvent utilisées dans la bibliothèque d'analyse de données Python "pandas".
2019-02-18 Mise à jour de la méthode d'agrandissement de l'affichage
2018-05-06 Reflect des commentaires (pd.set_option('display.width', 100))
2018-02-14 Correction de lien
2017-11-01 df.fillna(method='ffill')Correction de la description de
2017-06-09 Correction des liens rompus, etc.
2016-10-10 Exemples d'édition
2016-06-21 df.rolling, pd.date_range, pd.datetime, df.Ajouter un pivot, ajouter d'autres exemples
De nombreuses options sont disponibles, vous pouvez donc charger autre chose que csv.
import pandas as pd
df = pd.read_csv('some.csv')
Exemple: lors de la lecture de plusieurs colonnes (date
et hour
) ensemble en tant qu'index de type datetime ( date_hour
)
df = pd.read_csv('some.csv', parse_dates={'date_hour':['date', 'hour']}, index_col='date_hour')
Exemple: Lorsqu'un fichier contenant du japonais et «-» est traité comme des données manquantes
df = pd.read_csv('some.csv', encoding='Shift_JIS', na_values='--')
--Liste des options
option | sens |
---|---|
index_col | Nom de la colonne à indexer |
parse_dates | Nom de colonne à lire comme type datetime (liste ou dictionnaire) |
date_parser | parse_Fonction auto-conçue pour lire la colonne spécifiée par des dates |
na_values | Chaîne de caractères (liste) comme valeur manquante |
encoding | 'Shift_JIS'Tel |
sep | Délimiteur (' ': En cas d'espace) |
--Référence: http://pandas.pydata.org/pandas-docs/stable/generated/pandas.io.parsers.read_csv.html
Il est très facile d'écrire dans un fichier csv. Il existe de nombreuses options.
df.to_csv('some2.csv')
Exemple: si vous n'avez pas besoin d'index
df.to_csv('some2.csv', index=None)
Exemple: lors de la dénomination de l'index
df.to_csv('some2.csv', index_label='date')
--Référence: http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.to_csv.html
Supprimer la ligne (index) avec une valeur manquante (nan)
df = df.dropna()
Exemple: si une colonne particulière (temp
ou depth
) a une valeur manquante, supprimez cette ligne
(Ignorer les valeurs manquantes autres que «temp» et «depth»)
df = df.dropna(subset=['temp','depth'])
Exemple: remplissez les espaces avec une constante (0)
df = df.fillna(0)
Exemple: Remplissage du trou avant (arrière) (2017 / 11/01 Corrigé pour refléter le commentaire de @ hadacchi)
df = df.fillna(method='ffill') #avant de remplir le blanc nan 1.0 nan -> nan 1.0 1.0 (forward =Direction d'augmentation de l'index = direction descendante DataFrame)
df = df.fillna(method='bfill') #remplissage arrière nan 1.0 nan -> 1.0 1.0 nan (backward =Direction décroissante de l'index = DataFrame vers le haut)
--Référence: https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.fillna.html
De nombreuses méthodes d'interpolation sont disponibles.
df = df.interpolate(method='index')
linear
, time
, index
, values
, nearest
, zero
, slinear
, quadratic
, cubic
, barycentric
, krogh
, polynomial
, spline
, piecewise_polynomial
, pchip
au lieu de
linear`.--Référence: https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.interpolate.html
Modifiez la résolution (fréquence) des données de séries chronologiques. Quand je l'utilise, je réduis souvent le nombre de données, donc je le reconnais comme une fonction de compression.
Exemple: convertir les données horaires en moyenne quotidienne (ignorer les valeurs manquantes et la moyenne)
#daily = hourly.resample('D', how='mean') <-Ancienne façon d'écrire
daily = hourly.resample('D').mean()
Exemple: si la valeur est placée à 00:00, mais que vous voulez qu'elle soit à 12:00
daily = hourly.resample('D', loffset='12H').mean()
Charactor | sens | Remarques |
---|---|---|
M | Mois | 0.5M で半Moisとはならない |
D | journée | Je fais quelque chose avec 15D |
H | temps | 12H は12temps |
T or min | Minutes | 30min で30Minutes |
Prenez la moyenne mobile à n termes, la valeur maximale, etc.
Exemple: moyenne mobile à 3 termes (centre = Vrai et placez la valeur au centre (2ème terme dans ce cas))
ma3 = hourly.rolling(3, center=True).mean()
pd.date_range
Créez facilement des variables datetime consécutives
date = pd.date_range('2012-1-1', '2012-1-2', freq='D')
Exemple: puisque ce qui précède est l'horodatage des pandas, lors du retour à la variable datetime de python
date = pd.date_range('2012-1-1', '2012-1-2', freq='D').to_pydatetime()
pd.datetime
ʻImport datetime` non nécessaire
date = pd.datetime(2012, 1, 1, 0, 0, 0)
Jetez un coup d'œil aux statistiques telles que le nombre de données dans chaque colonne, la moyenne et la variance.
print df.describe()
Les données peuvent être manipulées facilement en les regroupant par colonne (conversion de la valeur de la colonne pour qu'elle puisse être traitée comme un index). Il est plus facile à comprendre que d'empiler et de désempiler.
Exemple: Groupez par plusieurs colonnes ("type" et "time") et prenez la moyenne de chaque groupe.
grouped_mean = df.groupby(['type','time']).mean()
--Référence: http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.groupby.html
df.pivot(1D→2D)
Image de la transformation d'un tableau unidimensionnel en un tableau bidimensionnel
temp2d = df.pivot(index='y', columns='x', values='temp')
Si vous souhaitez créer un DataFrame à partir de quelque chose d'autre qu'un fichier, créez un dictionnaire et chargez-le.
data = {'a':[0, 1], 'b':[2, 3]}
df = pd.DataFrame(data)
Exemple: lors de l'indexation de l'exemple ci-dessus
date = pd.date_range('2012-1-1', '2012-1-2', freq='D')
df = pd.DataFrame(data, index=date)
Si vous ne souhaitez pas que l'affichage soit enveloppé lors de l'impression d'un bloc de données avec un grand nombre de colonnes, vous pouvez modifier la largeur d'affichage.
pd.set_option('display.width', 100)
or
pd.set_option('display.max_columns', 100) #Peut être contrôlé par le nombre de colonnes
#pd.set_option('line_width', 100) # line_la largeur est obsolète ou supprimée (2018/05/06 Thanks to @dhwty)
print df #Ne comprend pas jusqu'à 100 caractères (ou colonne)
Recommended Posts