pandas
>>> import pandas as pd
pandas sagt "[Einführung in die Datenanalyse mit 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) ”. Wenn Sie im Detail studieren möchten, studieren Sie bitte hier.
Es gibt zwei Arten von Daten in Pandas: ** Serie ** und ** DataFrame **.
Series Ein Typ, der eine Spalte (Zeile) von Daten verarbeitet.
#Gewöhnlicher Listentyp
>>> 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 Ein Typ, der Tabellendaten verarbeitet.
#Gewöhnlicher Wörterbuchtyp
>>> 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
Das Lesen von Dateien wird bereitgestellt.
>>> pd.read*? # *Teilübereinstimmung im Anhang
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() #Wenn Sie eine Ganzzahl in das Argument einfügen
>>> dataset.tail() #Liest eine ganzzahlige Zeile
>>> dataset.ix[n] #Siehe Zeile n
>>> dataset.ix[m:n] # m~(n-1)Siehe Zeile
>>> dataset.ix[[0, 3, 5]] #Sehen Sie eine entfernte Linie
>>> dataset.Spaltenname
#Oder
>>> dataset['Spaltenname']
#Wenn Sie mehrere Spalten sehen möchten
>>> dataset[['Spaltenname 1', 'Spaltenname 2', ...,]]
>>> dataset[dataset.UID == 'Spaltenname']
Es scheint "len ()" und "count ()" zu kombinieren
--len ()
ruft die Größe der Daten ab.
--count ()
ruft die Anzahl der anderen Elemente als NA in Spaltenrichtung ab.
(Wenn das Argument "Achse = 1" ist, wird es in Zeilenrichtung sein)
>>> 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
Wenn Sie genauer hinschauen möchten, sollten Sie "isnull ()" und "any ()" kombinieren.
isnull ()
: Setzen Sie das Element NA auf True
und die anderen auf False
.
any ()
: Gibt True
zurück, wenn in Spaltenrichtung mindestens ein True
vorhanden ist, wenn nicht, False
.
(Wenn das Argument "Achse = 1" ist, wird es in Zeilenrichtung sein)
>>> dataset[dataset.isnull().any(axis=1)]
Hauptsächlich zwei.
dropna ()
: Löscht die Zeile mit NA. (Spaltenrichtung mit "Achse = 1" im Argument)
fillna ('etwas')
: Ersetzen Sie NA durch etwas
.
>>> dataset.dropna()
>>> dataset.fillna(0) #Ersetzen Sie NA durch 0
#Füllen Sie NA mit der vorherigen Wertfront?
>>> dataset.fillna(method='ffill')
#Füllen Sie NA mit dem Rückwert zurück?
>>> dataset.fillna(method='bfill')
Wenn Sie "beschreiben ()" verwenden, werden die meisten davon berechnet.
count
, mean
, std
, min
, 25%
, 50%
, 75%
, max
>>> dataset.describe()
Nach Element gruppieren.
>>> dataset.groupby('Spaltenname')
Es scheint, dass Pandas allein einige Grafiken zeichnen können.
Setze dtime
auf 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()
Wenn es wie oben (alle 2 Stunden) belassen wird, ist das Diagramm zu fein. Jeder andere Tag.
>>> c = b.resample('1d') # 1m:Jeder andere Monat
>>> c.plot()
>>> b.resample('1d', 'std').plot() #Standardabweichung
>>> b.drop('UID', axis=1).resample('1d', 'max').plot() #Maximalwert
>>> pd.rolling_mean(c, 12).plot() #12 Wochen
>>> c.hist()
>>> c.boxplot(return_type='axes')
>>> c.corr()
>>> import statsmodels.api as sm
>>> plot(sm.tsa.acf(b.Spaltenname))
>>> pd.tools.plotting.scatter_matrix(c)
>>> c = c.fillna(0)
>>> m = sm.OLS(c.Soushoshouhi, \
... c[['Hatsudenryou', 'Use_AirCon']])
>>> r = m.fit()
>>> r.summary2()
Der Rest ist hier.
Recommended Posts