Da Pandas eine auf numpy basierende Datenoperation ist, ist dies praktisch, da die Operation von numpy so verwendet werden kann, wie sie ist. Es ist jedoch schwierig zu verstehen, wie Zeilen und Spalten extrahiert werden, bis Sie sich daran gewöhnt haben. Ich bin immer noch nicht damit vertraut, also werde ich es aufschreiben.
Es gibt zwei Arten von Datenformaten in Pandas: DataFrame und Series. Ersteres sind zweidimensionale Daten und letzteres sind eindimensionale Daten. Grundsätzlich wird Series nur selten verwendet, daher konzentrieren wir uns auf DataFrame. Wenn eine Spalte angegeben und aus DataFrame abgerufen wird, wird sie zum Serientyp.
# DataFrame
foo bar
a 0 1
b 2 3
c 4 5
# Series
a 0
b 2
c 4
In DataFrame können Elementnummern wie numpy wie die n-te Zeile und die m-te Spalte sowie benutzerdefinierte Elementspezifikationen nach Index und Spalte als Elementpositionsinformationen angegeben werden. Sofern nicht anders angegeben, wird eine Nummer zugewiesen, die jedoch in der Praxis nicht verwendet wird, da sie bei einer solchen Verwendung mit numpy identisch ist. Persönlich frage ich mich auch, ob Index eine Zahl sein kann.
Gehen Sie wie folgt vor, um Index und Spalten anzugeben.
df.columns = ['foo', 'bar']
df.index = ['a', 'b', 'c']
Gehen Sie wie folgt vor, um den Index- und Spaltennamen des DataFrame zu überprüfen.
df.columns
df.index
df.info() # columns, index, memory usage
In DataFrame ist die Angabe, wie `__getitem__``` verwendet wird, die Angabe von Spalten. Sie können auch nach Spaltennummer abrufen. In diesem Fall müssen Sie jedoch auch nur einen einzelnen Listentyp angeben. Die Zeilennummer (Index) des Index kann mit dieser Methode jedoch nicht angegeben werden. Im Fall von Serien wird der Index durch
`getitem``` angegeben. Es ist natürlich, weil es nur eine Spalte gibt.
df['foo'] or df[[0]] # designate single column
df[['foo', 'bar']] or df[[0, 1]] # designate multi columns
Wie oben erwähnt, enthalten die Positionsinformationen der Elemente im DataFrame die Elementnummer der Matrix und den benutzerdefinierten Namen. Es gibt drei Typen, ix, iloc und loc, um zu klären, welcher für die Extraktion verwendet wird. iloc kann nur durch Nummer angegeben werden, loc kann nur durch Name angegeben werden und ix kann von beiden angegeben werden. Wenn Sie im obigen Beispiel [0,0] verwenden möchten, können Sie wie folgt schreiben.
df.ix[[0], [0]]
df.ix[[0], ['foo']]
df.ix[['a'], ['foo']]
df.ix[['a'], [0]]
df.iloc[[0], [0]]
df.loc[['a'], ['foo']]
Wenn Sie mehrere Indizes angeben möchten, können Sie übrigens wie folgt vorgehen.
df.ix[:, [0]] #alles
df.ix[1:5, [0]] #Bereichsspezifikation
df.ix[:] #Geben Sie nur den Index an
So extrahieren Sie Zeilen, die bestimmte Bedingungen erfüllen, aus angegebenen Spalten. Alle Spalten in dieser Spalte werden ausgegeben.
print foo.loc[foo['bar'] == condition]
Indirekt werden die Elemente, die die Bedingungen nicht erfüllen, zu NaN gemacht, und dann werden die Spalten, die NaN enthalten, gelöscht.
foo = foo[foo == 1] #Alle Elemente, die die Bedingungen nicht erfüllen, sind NaN.
foo = foo.dropna(axis=1)
Beim Iterieren für jede Spalte von pd.DataFrame.
for index, rows in df.iterrows():
print index, rows # rows: pd.Es ist ein DataFrame.
#Beim Erstellen nur eines Schiffes
foo = pd.DataFrame(columns=['bar', 'baz'])
foo = pd.DataFrame({'bar': [0, 1, 2],
'baz': [3, 4, 5]}
index=['a', 'b', 'c'])
# foo
bar baz
a 0 3
b 1 4
c 2 5
Das Hinzufügen einer neuen Spalte ist einfacher als das Hinzufügen einer Zeile.
foo['qux'] = [6, 7, 8]
# foo
bar baz qux
a 0 3 6
b 1 4 7
c 2 5 8
foo = foo.append(pd.DataFrame({'bar': [6, 7], 'baz': [8, 9]}, index=['d', 'e']))
# foo
#Wenn Sie den Index ändern möchten, müssen Sie ihn selbst angeben.
bar baz
a 0 3
b 1 4
c 2 5
d 6 7
e 8 9
foo.drop('e')
foo.drop('bar', axis=1) #Löschen Sie die Spalte.
del foo['bar'] #Löschen Sie die Spalte.(Ich benutze Python del.)
Referenz-URL http://stackoverflow.com/questions/17071871/select-rows-from-a-dataframe-based-on-values-in-a-column-in-pandas
referenced URL: http://sinhrks.hatenablog.com/entry/2014/11/12/233216
Recommended Posts