[PYTHON] Pandas

Was ist Pandas?

Pandas -wikipedia

pandas ist eine Bibliothek, die Funktionen zur Unterstützung der Datenanalyse in der Programmiersprache Python bietet. Insbesondere werden Datenstrukturen und Operationen zum Bearbeiten von numerischen Tabellen und Zeitreihendaten bereitgestellt. Der Entwickler Wes McKinney möchte ein leistungsstarkes und flexibles Tool für die quantitative Analyse von Finanzdaten. AQR Capital Management begann 2008 mit der Entwicklung von Pandas. Bevor er AQR verließ, überredete er seinen Chef, die Bibliothek der Öffentlichkeit zugänglich zu machen.

Pandas spezifisches Datenformat

Erstellen Sie einen DataFrame

Aus numpy Array erstellen

import numpy as np
import pandas as pd
d = np.array([[1,2,3],[4,5,6],[7,8,9]])
df = pd.DataFrame(d,columns=['a','b','c'])

>>> df
  a b c
0 1 2 3
1 4 5 6
2 7 8 9

Der Zeilenname lautet df.index Der Spaltenname lautet df.columns Kann bei untersucht werden

Erstellen Sie einen Listentyp aus einem Wörterbuch mit Werten

df = pd.DataFrame({'a':[1,4,7],'b':[2,5,8]},'c':[3,6,9])

>>> df
  a b c
0 1 2 3
1 4 5 6
2 7 8 9

CSV-Datei lesen

#Die erste Zeile wird als Spaltenname behandelt
# index_cols=0 :Geben Sie die Spaltennummer der Spalte an, die Sie ab 0 als Index verwenden möchten

import pandas as pd
df = pd.read_csv('data/src/sample_pandas_normal.csv', index_col=0)
print(df)
#          age state  point
# name                     
# Alice     24    NY     64
# Bob       42    CA     92
# Charlie   18    CA     70
# Dave      68    TX     70
# Ellen     24    CA     88
# Frank     30    NY     57

print(df.index.values)
# ['Alice' 'Bob' 'Charlie' 'Dave' 'Ellen' 'Frank']

print(df.columns.values)
# ['age' 'state' 'point']

Fügen Sie für CSV mit Index "index_cols = 0" hinzu.

Ohne ** index_cols = 0 ** wird die Indexspalte nicht erkannt.

df_header_index = pd.read_csv('data/src/sample_header_index.csv')
print(df_header_index)
#   Unnamed: 0   a   b   c   d
# 0        ONE  11  12  13  14
# 1        TWO  21  22  23  24
# 2      THREE  31  32  33  34
# ========================================================== #
df_header_index_col = pd.read_csv('data/src/sample_header_index.csv', index_col=0)
print(df_header_index_col)
#         a   b   c   d
# ONE    11  12  13  14
# TWO    21  22  23  24
# THREE  31  32  33  34

print(df_header_index_col.index)
# Index(['ONE', 'TWO', 'THREE'], dtype='object')

Fügen Sie "header = None" zu csv ohne Header hinzu

Wenn bei csv ohne Header pd.read_csv unverändert verwendet wird, besteht die erste Zeile aus Spalten. Wenn ** header = None **, werden den Spalten mit den Spaltennamen Seriennummern zugewiesen. Alternativ können Sie die Spaltennamen als ** names = ('A', 'B', 'C', 'D') ** festlegen.

11,12,13,14
21,22,23,24
31,32,33,34

import pandas as pd

df = pd.read_csv('data/src/sample.csv')
print(df)
#    11  12  13  14
# 0  21  22  23  24
# 1  31  32  33  34

print(df.columns)
# Index(['11', '12', '13', '14'], dtype='object')
# ========================================================== #
df_none = pd.read_csv('data/src/sample.csv', header=None)
print(df_none)
#     0   1   2   3
# 0  11  12  13  14
# 1  21  22  23  24
# 2  31  32  33  34
# ========================================================== #
df_names = pd.read_csv('data/src/sample.csv', names=('A', 'B', 'C', 'D'))
print(df_names)
#     A   B   C   D
# 0  11  12  13  14
# 1  21  22  23  24
# 2  31  32  33  34

Verwenden Sie beim Lesen "usecols", indem Sie eine Spalte angeben

df_none_usecols = pd.read_csv('data/src/sample.csv', header=None, usecols=[1, 3])
print(df_none_usecols)
#     1   3
# 0  12  14
# 1  22  24
# 2  32  34
# ========================================================== #
df_header_usecols = pd.read_csv('data/src/sample_header.csv',
                                usecols=lambda x: x is not 'b')
print(df_header_usecols)
#     a   c   d
# 0  11  13  14
# 1  21  23  24
# 2  31  33  34
# ========================================================== #
df_index_usecols = pd.read_csv('data/src/sample_header_index.csv',
                               index_col=0, usecols=[0, 1, 3])
print(df_index_usecols)
#         a   c
# ONE    11  13
# TWO    21  23
# THREE  31  33

Verwenden Sie "skiprows", wenn Sie Zeilen überspringen möchten

Wenn Sie eine Ganzzahl an Skiprows übergeben, ** überspringen Sie den Anfang der Datei um die Anzahl der Zeilen ** und lesen Sie sie.

df_none = pd.read_csv('data/src/sample.csv', header=None)
print(df_none)
#     0   1   2   3
# 0  11  12  13  14
# 1  21  22  23  24
# 2  31  32  33  34
# ========================================================== #
df_none = pd.read_csv('data/src/sample.csv', header=None, skiprows=2)
print(df_none)
#     0   1   2   3
# 0  31  32  33  34
# ========================================================== #
df_none_skiprows = pd.read_csv('data/src/sample.csv', header=None, skiprows=[1])
print(df_none_skiprows)
#     0   1   2   3
# 0  11  12  13  14
# 1  31  32  33  34
# ========================================================== #
#Wenn Sie die letzte Zeile überspringen möchten, klicken Sie auf "Fußzeile überspringen".=Auf "1" setzen
# engine='python'Eine Warnung kann auftreten, wenn nichts angegeben ist.
df_none_skipfooter = pd.read_csv('data/src/sample.csv', header=None,
                                 skipfooter=1, engine='python')
print(df_none_skipfooter)
#     0   1   2   3
# 0  11  12  13  14
# 1  21  22  23  24

Geben Sie die Anzahl der Zeilen an, die Sie mit "nrows" lesen möchten.

df_none_nrows = pd.read_csv('data/src/sample.csv', header=None, nrows=2)
print(df_none_nrows)
#     0   1   2   3
# 0  11  12  13  14
# 1  21  22  23  24

Verwenden Sie "dtype", um den Spaltentyp anzugeben

df_str_col = pd.read_csv('data/src/sample_header_index_dtype.csv',
                         index_col=0, dtype={'b': str, 'c': str})
print(df_str_col)
#        a    b    c  d
# ONE    1  001  100  x
# TWO    2  020  NaN  y
# THREE  3  300  300  z

print(df_str_col.dtypes)
# a     int64
# b    object
# c    object
# d    object
# dtype: object
# ========================================================== #
#DataFrame-Spalten können mit "als Typ" typkonvertiert werden.
print(df['s_i'].astype(int))
# 0      0
# 1     10
# 2    200
# Name: s_i, dtype: int64

Fehlender Wert

By default the following values are interpreted as NaN: ‘’, ‘#N/A’, ‘#N/A N/A’, ‘#NA’, ‘-1.#IND’, ‘-1.#QNAN’, ‘-NaN’, ‘-nan’, ‘1.#IND’, ‘1.#QNAN’, ‘N/A’, ‘NA’, ‘NULL’, ‘NaN’, ‘n/a’, ‘nan’, ‘null’. pandas.read_csv — pandas 0.23.0 documentation

"Na_values" beim Hinzufügen von Werten, die als fehlende Werte behandelt werden sollen

df_nan = pd.read_csv('data/src/sample_header_index_nan.csv', index_col=0)
print(df_nan)
#          a   b
# ONE    NaN NaN
# TWO      - NaN
# THREE  NaN NaN
# ========================================================== #
df_nan_set_na = pd.read_csv('data/src/sample_header_index_nan.csv',
                            index_col=0, na_values='-')
print(df_nan_set_na)
#         a   b
# ONE   NaN NaN
# TWO   NaN NaN
# THREE NaN NaN

Wenn Sie die fehlenden Werte selbst bestimmen möchten, verwenden Sie "na_values" und "keep_default_na = False" zusammen.

,a,b
ONE,,NaN
TWO,-,nan
THREE,null,N/A
# ========================================================== #
df_nan_set_na_no_keep = pd.read_csv('data/src/sample_header_index_nan.csv',
                                    index_col=0, na_values=['-', 'NaN', 'null'],
                                    keep_default_na=False)
print(df_nan_set_na_no_keep)
#          a    b
# ONE         NaN
# TWO    NaN  nan
# THREE  NaN  N/A

Verwenden Sie "na_filter", um fehlende Werte zu beseitigen

,a,b
ONE,,NaN
TWO,-,nan
THREE,null,N/A
# ========================================================== #
df_nan_no_filter = pd.read_csv('data/src/sample_header_index_nan.csv',
                               index_col=0, na_filter=False)
print(df_nan_no_filter)
#           a    b
# ONE          NaN
# TWO       -  nan
# THREE  null  N/A

Verwenden Sie "encoding = 'shift_jis'", wenn die Daten Japanisch enthalten

df_sjis = pd.read_csv('data/src/sample_header_shift_jis.csv',
                      encoding='shift_jis')
print(df_sjis)
#    a   b   c   d
#0 A 12 13 14
#1 22 23 24
#2 U 32 33 34

Read_csv, das alles lesen kann, ist wirklich exzellent ...

Wenn die Erweiterung .gz, .bz2, .zip, .xz lautet, wird sie automatisch erkannt und erweitert. Wenn die Erweiterungen unterschiedlich sind, geben Sie die Zeichenfolgen 'gz', 'bz2', 'zip' und 'xz' in der Argumentkomprimierung explizit an. Darüber hinaus wird es nur unterstützt, wenn nur die CSV-Datei komprimiert ist. Ein Fehler tritt auf, wenn mehrere Dateien komprimiert werden. zip und xz werden ab Version 0.18.1 unterstützt.

df_zip = pd.read_csv('data/src/sample_header.csv.zip')
df_web = pd.read_csv('http://www.post.japanpost.jp/zipcode/dl/oogaki/zip/13tokyo.zip',
                 header=None, encoding='shift_jis')

Machen Sie eine neue Zeile

#Horizontale Richtung(axis = 1)So erstellen Sie eine Spalte mit dem Namen "Total"
df['Total'] = df.sum(axis=1)

Zusammengefasste Statistiken

at, iat: Wählen Sie den Wert eines einzelnen Elements aus, holen Sie ihn ab / ändern Sie ihn loc, iloc: Wählen Sie den Wert eines einzelnen Elements oder mehrerer Elemente aus, holen Sie ihn ab / ändern Sie ihn

count: Anzahl der Elemente einzigartig: Anzahl der eindeutigen (eindeutigen) Wertelemente oben: Häufigster Wert (Modus) freq: Häufigkeit der häufigsten Werte (Anzahl der Vorkommen) Mittelwert: Arithmetischer Durchschnitt Standard: Standardabweichung min: Mindestwert max: Maximalwert 50%: Median 25%, 75%: 1/4 Minuten, 3/4 Minuten

import pandas as pd

df = pd.DataFrame({'a': [1, 2, 1, 3],
                   'b': [0.4, 1.1, 0.1, 0.8],
                   'c': ['X', 'Y', 'X', 'Z'],
                   'd': ['3', '5', '2', '1'],
                   'e': [True, True, False, True]})

print(df)
#    a    b  c  d      e
# 0  1  0.4  X  3   True
# 1  2  1.1  Y  5   True
# 2  1  0.1  X  2  False
# 3  3  0.8  Z  1   True

print(df.dtypes)
# a      int64
# b    float64
# c     object
# d     object
# e       bool
# dtype: object
# ========================================================== #
##Zeigen Sie zusammenfassende Statistiken für den Datenrahmen df an
#Durchschnitt, Standardabweichung, Maximalwert, Minimalwert, häufigster Wert usw. für jede Spalte

print(df.describe())
#               a         b
# count  4.000000  4.000000
# mean   1.750000  0.600000
# std    0.957427  0.439697
# min    1.000000  0.100000
# 25%    1.000000  0.325000
# 50%    1.500000  0.600000
# 75%    2.250000  0.875000
# max    3.000000  1.100000

print(type(df.describe()))
# <class 'pandas.core.frame.DataFrame'>

print(df.describe().loc['std']) #Standard ist die Standardabweichung
# a    0.957427
# b    0.439697
# Name: std, dtype: float64

print(df.describe().at['std', 'b'])
# 0.439696865275764

Verwenden Sie "exclude = 'number'", wenn Sie das Ergebnis einer anderen Spalte als eines numerischen Werts wie einer Zeichenfolge anzeigen möchten.

** Wenn include = 'all', werden alle Arten von Spalten eingeschlossen. ** **.

print(df.describe(exclude='number'))
#         c  d     e
# count   4  4     4
# unique  3  4     2
# top     X  3  True
# freq    2  1     3

Datenplot

df.plot() #Liniendiagramm
df.plot.bar(stacked=True) #Gestapeltes Balkendiagramm
df.plot.scatter(‘Japanese’,’English’) #Streudiagramm durch Angabe von Spalten
df[‘Japanese’].plot.hist() #Schema durch Angabe von Spalten

Recommended Posts

Pandas
Pandas Grundlagen
Pandas Notizen
Memorandum of Pandas
Pandas Grundlagen
Pandas Memorandum
Pandas Memo
pandas SettingWithCopyWarning
Pandas Selbststudium Memo
Meine Pandas (Python)
Pandas-Übung (Bearbeiten)
Excel-> Pandas-> SQLite
[Pandas] GroupBy-Tipps
Pandas Daten lesen
Über beschreiben Pandas
Pandas verwandte Links
Pandas mit fehlendem Wert
9rep - Pandas MySQL
Pandas Operations Memorandum
Nach Pandas sortieren
Python Pandas Memo
Pandas Serie Teil 1
[Anmerkung] Pandas entstapeln
[Zur Aufnahme] Pandas Memorandum
Gebrauchsfertige Pandas-Beschleunigungstechniken
Mit Pandas schnell visualisieren
Zusammenfassung der persönlichen Notizen von Pandas
Lerne Pandas in 10 Minuten
Verwendung von Pandas 2
Datensätze mit Pandas verarbeiten (1)
Bootstrap-Sampling mit Pandas
Konvertieren Sie 202003 bis 2020-03 mit Pandas
Datensätze mit Pandas verarbeiten (2)
[Tipps] Meine Pandas-Notiz
Zusammenführen von Datensätzen mit Pandas
Kreuztabelle mit Pandas
Pandas Reverse Memo
Installation von Jupyter und Pandas
Grundlegende Bedienung von Pandas
Pandas lernen mit Chemoinfomatik
Meine Pandas zu spät?
UnicodeDecodeError in pandas read_csv
Pandas Index und Reindex
Lesen Sie die CSV-Datei: pandas
Pandas-Formatdatei lesen
Grundlegende Bedienung von Pandas
Pandas auf python2.6 installieren
pandas idxmax ist langsam
Datenvisualisierung mit Pandas
Datenmanipulation mit Pandas!
Pandas resample und rollen
Daten mit Pandas mischen
Pandas Mittelwertbildung und Auflistung
[Numpy / Pandas / Matplotlib Übung 01]
Python-Anwendung: Pandas # 3: Dataframe
Python Basic - Pandas, Numpy -