pandas
>>> import pandas as pd
pandas dit "[Introduction à l'analyse des données avec Python](http://www.amazon.co.jp/Python%E3%81%AB%E3%82%88%E3%82%8B%E3%83%87%E3" % 83% BC% E3% 82% BF% E5% 88% 86% E6% 9E% 90% E5% 85% A5% E9% 96% 80-% E2% 80% 95NumPy% E3% 80% 81pandas% E3% 82% 92% E4% BD% BF% E3% 81% A3% E3% 81% 9F% E3% 83% 87% E3% 83% BC% E3% 82% BF% E5% 87% A6% E7% 90% 86-Wes-McKinney / dp / 4873116554) ». Si vous souhaitez étudier en détail, veuillez étudier ici.
Il existe deux types de données dans les pandas: ** Series ** et ** DataFrame **.
Series Un type qui gère une colonne (ligne) de données.
#Type de liste ordinaire
>>> lst = [1, 2, 3, 4, 5]
# Series
>>> s = pd.Series(lst)
>>> s
0 1
1 2
2 3
3 4
4 5
dtype: float64
DataFrame Un type qui gère les données de table.
#Type de dictionnaire ordinaire
>>> dic = {"a": [1, 2, 3], "b": [9, 8, 7]}
# DataFrame
>>> df = pd.DataFrame(dic)
a b
0 1 9
1 2 8
2 3 7
I/O
La lecture des fichiers est fournie.
>>> pd.read*? # *Correspondance partielle une fois attaché
pd.read_clipboard
pd.read_csv
pd.read_excel
pd.read_fwf
pd.read_gbq
pd.read_hdf
pd.read_html
pd.read_json
pd.read_msgpack
pd.read_pickle
pd.read_sql
pd.read_sql_query
pd.read_sql_table
pd.read_stata
pd.read_table
>>> dataset = pd.read('sample.csv')
>>> dataset.to_csv('write.csv')
>>> dataset.head() #Si vous mettez un entier dans l'argument
>>> dataset.tail() #Lit une ligne entière
>>> dataset.ix[n] #Voir la ligne n
>>> dataset.ix[m:n] # m~(n-1)Voir la ligne
>>> dataset.ix[[0, 3, 5]] #Voir une ligne éloignée
>>> dataset.Nom de colonne
#Ou
>>> dataset['Nom de colonne']
#Lorsque vous souhaitez voir plusieurs colonnes
>>> dataset[['Nom de colonne 1', 'Nom de colonne 2', ...,]]
>>> dataset[dataset.UID == 'Nom de colonne']
Il semble combiner len ()
et count ()
--len ()
obtient la taille des données.
--count ()
obtient le nombre d'éléments autres que NA dans la direction de la colonne.
(Si l'argument est ʻaxis = 1`, ce sera dans le sens de la ligne)
>>> len(dataset) - dataset.count()
UID 0
dtime 0
Sousyouhi 0
Hatsudenryou 0
Jikasyouhi 0
Uriden 0
Kaiden 0
Use_AirCon 0
Use_Kyutou 3
Use_Kaden 0
dtype: int64
Si vous voulez regarder de plus près, vous devez combiner ʻis null () et ʻany ()
.
ʻIsnull () : Définissez l'élément NA sur
True et les autres sur
False. ʻAny ()
: Renvoie True
s'il y a au moins un True
dans le sens de la colonne, False
s'il n'y en a pas.
(Si l'argument est ʻaxis = 1`, ce sera dans le sens de la ligne)
>>> dataset[dataset.isnull().any(axis=1)]
Principalement deux.
dropna ()
: supprime la ligne contenant NA. (Direction de la colonne avec ʻaxis = 1dans l'argument)
fillna ('something'): Remplacez NA par
something`.
>>> dataset.dropna()
>>> dataset.fillna(0) #Remplacez NA par 0
#Remplir NA avec le front de valeur précédente?
>>> dataset.fillna(method='ffill')
#Remplissez NA avec la valeur de retour?
>>> dataset.fillna(method='bfill')
Si vous utilisez describe ()
, il calculera la plupart d'entre eux.
count
, mean
, std
, min
, 25%
, 50%
, 75%
, max
>>> dataset.describe()
Regrouper par élément.
>>> dataset.groupby('Nom de colonne')
Il semble que les pandas seuls puissent dessiner des graphiques.
Définissez dtime
sur index
>>> tdataset = dataset.copy()
>>> tdataset.index = tdatasset.dtime.apply(pd.to_datetime)
>>> tdataset.drop('dtime', axis=1, inplace=True)
>>> b = tdataset[tdataset.UID == 'id1'] \
... [['UID', 'Soushohi']]
>>> b.plot()
S'il est laissé tel quel (toutes les 2 heures) comme ci-dessus, le graphique est trop fin. Tous les autres jours.
>>> c = b.resample('1d') # 1m:Un mois sur deux
>>> c.plot()
>>> b.resample('1d', 'std').plot() #écart-type
>>> b.drop('UID', axis=1).resample('1d', 'max').plot() #Valeur maximum
>>> pd.rolling_mean(c, 12).plot() #12 semaines
>>> c.hist()
>>> c.boxplot(return_type='axes')
>>> c.corr()
>>> import statsmodels.api as sm
>>> plot(sm.tsa.acf(b.Nom de colonne))
>>> pd.tools.plotting.scatter_matrix(c)
>>> c = c.fillna(0)
>>> m = sm.OLS(c.Soushoshouhi, \
... c[['Hatsudenryou', 'Use_AirCon']])
>>> r = m.fit()
>>> r.summary2()
Le reste est ici.
Recommended Posts