[PYTHON] Ich möchte ○○ mit Pandas machen

Änderungsprotokoll


Pandas fragt oft: "Was soll ich tun, wenn ich das tun möchte?", Also werde ich sie nach Gebrauch zusammenfassen.

Annahme

In diesem Beispielcode Titanic-Überlebensliste (train.csv) von Kaggle Lesen und verwenden Sie mit pandas.read_csv ().

Titanic: Machine Learning from Disaster | Kaggle

import pandas as pd
df = pd.read_csv('train.csv')

pandas.read_csv — pandas 1.0.5 documentation

Ich möchte statistische Informationen ausgeben

df.describe()
PassengerId Survived Pclass Age SibSp Parch Fare
count 891.000000 891.000000 891.000000 714.000000 891.000000 891.000000 891.000000
mean 446.000000 0.383838 2.308642 29.699118 0.523008 0.381594 32.204208
std 257.353842 0.486592 0.836071 14.526497 1.102743 0.806057 49.693429
min 1.000000 0.000000 1.000000 0.420000 0.000000 0.000000 0.000000
25% 223.500000 0.000000 2.000000 20.125000 0.000000 0.000000 7.910400
50% 446.000000 0.000000 3.000000 28.000000 0.000000 0.000000 14.454200
75% 668.500000 1.000000 3.000000 38.000000 1.000000 0.000000 31.000000
max 891.000000 1.000000 3.000000 80.000000 8.000000 6.000000 512.329200
#Grenzen Sie die Ausgabespalten ein
df['Age'].describe()
count    714.000000
mean      29.699118
std       14.526497
min        0.420000
25%       20.125000
50%       28.000000
75%       38.000000
max       80.000000
Name: Age, dtype: float64

pandas.DataFrame.describe — pandas 1.0.5 documentation

Ich möchte die Anzahl der Daten überprüfen

df['Age'].count()
714

Sie können die Anzahl der Zeilen / Spalten überprüfen, die andere Werte als "Keine", "NaN" und "NaT" enthalten.

Ich möchte die Daten eingrenzen

# 20 < Age <40 Zeilen extrahieren
df[(20 < df['Age']) & (df['Age'] < 40)].head()
Index PassengerId Survived Pclass Name Sex Age SibSp Parch Ticket Fare Cabin Embarked
0 1 0 3 Braund, Mr. Owen Harris male 22.0 1 0 A/5 21171 7.2500 NaN S
1 2 1 1 Cumings, Mrs. John Bradley (Florence Briggs Th... female 38.0 1 0 PC 17599 71.2833 C85 C
2 3 1 3 Heikkinen, Miss. Laina female 26.0 0 0 STON/O2. 3101282 7.9250 NaN S
3 4 1 1 Futrelle, Mrs. Jacques Heath (Lily May Peel) female 35.0 1 0 113803 53.1000 C123 S
4 5 0 3 Allen, Mr. William Henry male 35.0 0 0 373450 8.0500 NaN S

Wenn Sie durch mehrere UND / ODER-Bedingungen eingrenzen möchten, geben Sie die Bedingungen an, indem Sie sie in "()" einschließen, z. B. "df [(A) & (B)]".

Ich möchte kategorisierte Daten in numerische Werte konvertieren

# Embarked(C, Q, S)Numerischer Wert(1, 2, 3)Umstellung auf
df['Embarked'] = df['Embarked'].map({'C': 1, 'Q': 2, 'S': 3})
Index PassengerId Survived Pclass Name Sex Age SibSp Parch Ticket Fare Cabin Embarked
0 1 0 3 Braund, Mr. Owen Harris male 22.0 1 0 A/5 21171 7.2500 NaN 3.0
1 2 1 1 Cumings, Mrs. John Bradley (Florence Briggs Th... female 38.0 1 0 PC 17599 71.2833 C85 1.0
2 3 1 3 Heikkinen, Miss. Laina female 26.0 0 0 STON/O2. 3101282 7.9250 NaN 3.0
3 4 1 1 Futrelle, Mrs. Jacques Heath (Lily May Peel) female 35.0 1 0 113803 53.1000 C123 3.0
4 5 0 3 Allen, Mr. William Henry male 35.0 0 0 373450 8.0500 NaN 3.0

pandas.Series.map — pandas 1.0.4 documentation

Ich möchte den Spaltennamen ändern

# Sex(female, male)Numerischer Wert(0, 1)Konvertieren in und Spaltenname(Sex)Zu männlich
df['Sex'] = df['Sex'].map({'female': 0, 'male': 1})
df = df.rename(columns={'Sex': 'Male'})
Index PassengerId Survived Pclass Name Male Age SibSp Parch Ticket Fare Cabin Embarked
0 1 0 3 Braund, Mr. Owen Harris 1 22.0 1 0 A/5 21171 7.2500 NaN 3.0
1 2 1 1 Cumings, Mrs. John Bradley (Florence Briggs Th... 0 38.0 1 0 PC 17599 71.2833 C85 1.0
2 3 1 3 Heikkinen, Miss. Laina 0 26.0 0 0 STON/O2. 3101282 7.9250 NaN 3.0
3 4 1 1 Futrelle, Mrs. Jacques Heath (Lily May Peel) 0 35.0 1 0 113803 53.1000 C123 3.0
4 5 0 3 Allen, Mr. William Henry 1 35.0 0 0 373450 8.0500 NaN 3.0

pandas.DataFrame.rename — pandas 1.0.4 documentation

Wenn Sie ein Array mit einer Liste von Spaltennamen übergeben, können Sie alle Spaltennamen gleichzeitig ändern.

pd.DataFrame({'c': [1, 2], 'd': [10, 20]}).columns = ['a', 'b']
Index a b
0 1 10
1 2 20

python - Renaming columns in pandas - Stack Overflow

Ich möchte die Anzahl der fehlenden Werte für jede Spalte überprüfen

df.isnull().sum()
PassengerId      0
Survived         0
Pclass           0
Name             0
Male             0
Age            177
SibSp            0
Parch            0
Ticket           0
Fare             0
Cabin          687
Embarked         2
dtype: int64

pandas.isnull — pandas 1.0.4 documentation pandas.DataFrame.sum — pandas 1.0.4 documentation

Ich möchte fehlende Werte ausschließen

#Schließen Sie alle Zeilen mit fehlenden Werten aus
df_dn = df.dropna()
df_dn.count()
PassengerId    183
Survived       183
Pclass         183
Name           183
Male           183
Age            183
SibSp          183
Parch          183
Ticket         183
Fare           183
Cabin          183
Embarked       183
dtype: int64

pandas.DataFrame.dropna — pandas 1.0.5 documentation

Ich möchte die angegebene Spalte abrufen

#Spalten "Überleben" und "Alter" extrahieren
df[['Survived', 'Age']]
Index Survived Age
0 0 22.0
1 1 38.0
2 1 26.0
3 1 35.0
4 0 35.0

Indexing and selecting data — pandas 1.0.4 documentation Abrufen / Ändern des Werts einer Position mit Pandas unter, iat, loc, iloc | note.nkmk.me

Ich möchte die angegebene Spalte ausschließen

df_dn = df.drop('Cabin', axis='columns')
Index PassengerId Survived Pclass Name Male Age SibSp Parch Ticket Fare Embarked
0 1 0 3 Braund, Mr. Owen Harris 1 22.0 1 0 A/5 21171 7.2500 3.0
1 2 1 1 Cumings, Mrs. John Bradley (Florence Briggs Th... 0 38.0 1 0 PC 17599 71.2833 1.0
2 3 1 3 Heikkinen, Miss. Laina 0 26.0 0 0 STON/O2. 3101282 7.9250 3.0
3 4 1 1 Futrelle, Mrs. Jacques Heath (Lily May Peel) 0 35.0 1 0 113803 53.1000 3.0
4 5 0 3 Allen, Mr. William Henry 1 35.0 0 0 373450 8.0500 3.0

pandas.DataFrame.dropna — pandas 1.0.5 documentation

Ich möchte eine Funktion auf einen Zeilen- / Spaltenwert anwenden und eine neue Zeile / Spalte erstellen

import re

#Funktion zum Extrahieren des Titels
def getTitle(row):
    name = row['Name']
    p = re.compile('.*\ (.*)\.\ .*')
    surname = p.search(name)
    return surname.group(1)

df['Title'] = df.apply(getTitle, axis='columns')
Index PassengerId Survived Pclass Name Male Age SibSp Parch Ticket Fare Cabin Embarked Title
0 1 0 3 Braund, Mr. Owen Harris 1 22.0 1 0 A/5 21171 7.2500 NaN 3.0 Mr
1 2 1 1 Cumings, Mrs. John Bradley (Florence Briggs Th... 0 38.0 1 0 PC 17599 71.2833 C85 1.0 Mrs
2 3 1 3 Heikkinen, Miss. Laina 0 26.0 0 0 STON/O2. 3101282 7.9250 NaN 3.0 Miss
3 4 1 1 Futrelle, Mrs. Jacques Heath (Lily May Peel) 0 35.0 1 0 113803 53.1000 C123 3.0 Mrs
4 5 0 3 Allen, Mr. William Henry 1 35.0 0 0 373450 8.0500 NaN 3.0 Mr

pandas.DataFrame.apply — pandas 1.0.5 documentation

Ich möchte den Durchschnitt für jede Kategorie berechnen

#Finden Sie das Durchschnittsalter für jeden Titel
df.groupby('Title').mean()['Age']
Title
Capt        70.000000
Col         58.000000
Countess    33.000000
Don         40.000000
Dr          42.000000
Jonkheer    38.000000
L           54.000000
Lady        48.000000
Major       48.500000
Master       4.574167
Miss        21.773973
Mlle        24.000000
Mme         24.000000
Mr          32.368090
Mrs         35.728972
Ms          28.000000
Rev         43.166667
Sir         49.000000
Name: Age, dtype: float64

Sie können die Anzahl der Datenelemente für jeden Titel auch mithilfe von "df.groupby (" Titel "). Count ()" ermitteln. Verwendung von Pandas groupby --Qiita

Ich möchte Zeilen nach Wert sortieren

df.sort_values(by='Age')
Index PassengerId Survived Pclass Name Male Age SibSp Parch Ticket Fare Cabin Embarked Title AgeMean
803 804 1 3 Thomas, Master. Assad Alexander 1 0.42 0 1 2625 8.5167 NaN 1.0 Master NaN
755 756 1 2 Hamalainen, Master. Viljo 1 0.67 1 1 250649 14.5000 NaN 3.0 Master NaN
644 645 1 3 Baclini, Miss. Eugenie 0 0.75 2 1 2666 19.2583 NaN 1.0 Miss NaN
469 470 1 3 Baclini, Miss. Helene Barbara 0 0.75 2 1 2666 19.2583 NaN 1.0 Miss NaN
78 79 1 2 Caldwell, Master. Alden Gates 1 0.83 0 2 248738 29.0000 NaN 3.0 Master NaN

pandas.DataFrame.sort_values — pandas 1.0.5 documentation

Normalerweise bleibt der DaraFrame, der sort_values () ausgeführt hat, unverändert, und die Rückgabewerte werden in einem sortierten Zustand erhalten. Wenn ascending = False angegeben ist, werden die angegebenen Spalten in absteigender Reihenfolge sortiert. Wenn "inplace = True" angegeben ist, wird der DataFrame, der "sort_values ()" ausgeführt hat, sortiert und der Rückgabewert lautet "None".

Ich möchte den eindeutigen Wert in einer Spalte herausfinden

df['Survived'].unique()
array([0, 1], dtype=int64)

pandas.unique — pandas 1.0.5 documentation

Ich möchte eine Zeile mit einer bestimmten Zeichenfolge abrufen

df[df['Name'].str.contains('Thomas')]
Index PassengerId Survived Pclass Name Male Age SibSp Parch Ticket Fare Cabin Embarked Title AgeMean
149 150 0 2 Byles, Rev. Thomas Roussel Davids 1 42.00 0 0 244310 13.0000 NaN 3.0 Rev NaN
151 152 1 1 Pears, Mrs. Thomas (Edith Wearne) 0 22.00 1 0 113776 66.6000 C2 3.0 Mrs NaN
159 160 0 3 Sage, Master. Thomas Henry 1 NaN 8 2 CA. 2343 69.5500 NaN 3.0 Master NaN
186 187 1 3 O'Brien, Mrs. Thomas (Johanna "Hannah" Godfrey) 0 NaN 1 0 370365 15.5000 NaN 2.0 Mrs NaN
252 253 0 1 Stead, Mr. William Thomas 1 62.00 0 0 113514 26.5500 C87 3.0 Mr NaN

pandas.Series.str.contains — pandas 1.0.5 documentation python - How to filter rows containing a string pattern from a Pandas dataframe - Stack Overflow

Verwenden Sie den Operator ~, wenn Sie * Werte abrufen möchten, die * keine bestimmte Zeichenfolge enthalten.

df[~df['Name'].str.contains('Thomas')]
Index PassengerId Survived Pclass Name Male Age SibSp Parch Ticket Fare Cabin Embarked Title AgeMean
0 1 0 3 Braund, Mr. Owen Harris 1 22.0 1 0 A/5 21171 7.2500 NaN 3.0 Mr NaN
1 2 1 1 Cumings, Mrs. John Bradley (Florence Briggs Th... 0 38.0 1 0 PC 17599 71.2833 C85 1.0 Mrs NaN
2 3 1 3 Heikkinen, Miss. Laina 0 26.0 0 0 STON/O2. 3101282 7.9250 NaN 3.0 Miss NaN
3 4 1 1 Futrelle, Mrs. Jacques Heath (Lily May Peel) 0 35.0 1 0 113803 53.1000 C123 3.0 Mrs NaN
4 5 0 3 Allen, Mr. William Henry 1 35.0 0 0 373450 8.0500 NaN 3.0 Mr NaN

python - Search for "does-not-contain" on a DataFrame in pandas - Stack Overflow

Ich möchte Farbe hinzufügen, wenn ein Datenrahmen angezeigt wird

#Wert"Mr"Machen Sie die Hintergrundfarbe der Spalte gelb
df.style.apply(lambda x: ['background-color: yellow' if v == 'Mr' else '' for v in x])
Index PassengerId Survived Pclass Name Male Age SibSp Parch Ticket Fare Cabin Embarked Title AgeMean
0 1 0 3 Braund, Mr. Owen Harris 1 22.000000 1 0 A/5 21171 7.250000 nan 3.000000 Mr nan
1 2 1 1 Cumings, Mrs. John Bradley (Florence Briggs Thayer) 0 38.000000 1 0 PC 17599 71.283300 C85 1.000000 Mrs nan
2 3 1 3 Heikkinen, Miss. Laina 0 26.000000 0 0 STON/O2. 3101282 7.925000 nan 3.000000 Miss nan
3 4 1 1 Futrelle, Mrs. Jacques Heath (Lily May Peel) 0 35.000000 1 0 113803 53.100000 C123 3.000000 Mrs nan
4 5 0 3 Allen, Mr. William Henry 1 35.000000 0 0 373450 8.050000 nan 3.000000 Mr nan

Beim Öffnen in Jupyter Notebook wird die entsprechende Spalte mit einem farbigen Hintergrund angezeigt. Beachten Sie, dass beim Öffnen des Jupyter-Notizbuchs auf GitHub die Hintergrundfarbe nicht hinzugefügt wird.

pandas.io.formats.style.Styler.apply — pandas 1.0.5 documentation python - Pandas style function to highlight specific columns - Stack Overflow

Ich möchte im CSV-Format ausgeben

df.to_csv('output.csv', index=False)

Wenn Sie den Index (Zeilennummer) nicht einschließen möchten, geben Sie "index = False" an. pandas.DataFrame.to_csv — pandas 1.0.5 documentation

Wenn Sie keinen Zeilenumbruch in die letzte Zeile der Datei einfügen möchten, übergeben Sie line_terminator =" " nur in der letzten Zeile python - How to stop writing a blank line at the end of csv file - pandas - Stack Overflow

Recommended Posts

Ich möchte ○○ mit Pandas machen
Ich möchte mit Python debuggen
Ich möchte Objekte mit OpenCV erkennen
Ich möchte einen Blog mit Jupyter Notebook schreiben
Ich möchte eine Pip-Installation mit PythonAnywhere durchführen
Ich möchte Protokolle mit Python analysieren
Ich möchte mit aws mit Python spielen
Konvertieren Sie 202003 bis 2020-03 mit Pandas
Ich möchte den vollständigen Text mit elasticsearch + python durchsuchen
Ich möchte Dunnetts Test in Python machen
Ich möchte MATLAB feval mit Python verwenden
Ich möchte datetime.datetime.now () auch mit pytest verspotten!
Ich möchte mehrere Bilder mit matplotlib anzeigen.
Ich möchte 100 Datenwissenschaften mit Colaboratory schlagen
Ich möchte ein Spiel mit Python machen
Ich möchte Temporäres Verzeichnis mit Python2 verwenden
Ich möchte -inf nicht mit np.log verwenden
#Unresolved Ich möchte Gobject-Introspection mit Python3 kompilieren
Ich möchte ip vrf mit SONiC verwenden
Ich möchte APG4b mit Python lösen (Kapitel 2)
Ich möchte pyenv + pipenv auch unter Windows machen
Ich möchte mit Djangos Migrate von vorne beginnen
Ich möchte mit Python in eine Datei schreiben
Ich möchte es mit Python Lambda Django machen, aber ich werde aufhören
Hinweis: Ich möchte die Heimautomation mit Home Assistant + Raspberry Pi + Sensor Nr. 1 durchführen
Ich möchte SUDOKU lösen
Ich möchte mit Jubatus (1) eine nicht autorisierte Anmeldung bei Facebook erkennen.
Ich möchte einem Pandas-Datenrahmen eine group_id geben
Ich möchte mit einem Knopf am Kolben übergehen
Ich möchte die Optimierung mit Python und CPlex behandeln
Ich möchte mit verstärkendem Lernen einen Berg besteigen
Links, um mit Sublime Text zu tun, was Sie wollen
Ich möchte mit Python-Datenklasse nach hinten erben
Ich möchte eine Zeichenkette mit Hiragana teilen
Ich möchte Lambda mit Python auf Mac AWS!
Ich möchte manuell eine Legende mit matplotlib erstellen
[TensorFlow] Ich möchte Fenster mit Ragged Tensor verarbeiten
Ich möchte einen Quantencomputer mit Python betreiben
Ich möchte am Ende etwas mit Python machen
Ich möchte Wake On LAN vollautomatisch ausführen
Ich möchte eine lokale Variable mit Lambda binden
Ich möchte die Effizienz mit Python auch in einem experimentellen System verbessern. (3) Ich möchte mit Pandas so etwas wie Excel machen
Ich möchte Daten mit Python analysieren können (Teil 3)
Ich möchte Pythons ungelöste Importwarnung mit vsCode entfernen
Ich möchte R-Funktionen einfach mit ipython notebook verwenden
[AWS] Was tun, wenn Sie mit Lambda pfeifen möchten?
Ich möchte eine andere Version von Python mit pyvenv angeben
Ich möchte Daten mit Python analysieren können (Teil 1)
Ich möchte so etwas wie Uniq in Python sortieren
Ich möchte systemd grob verstehen
Ich möchte eine Jupyter-Umgebung mit einem Befehl starten
[NetworkX] Ich möchte nach Knoten mit bestimmten Attributen suchen
Ich möchte ein Klickmakro mit pyautogui (Wunsch) erstellen.
Ich möchte mit Numpy die japanische Flagge in die Palau-Flagge ändern
Schwanzrekursion mit Python2 durchführen
Ich möchte Daten mit Python analysieren können (Teil 4)
Ich möchte mit GAN Schwarzweißfotos von Erinnerungen ausmalen
Ich möchte automatisch an Online-Kursen mit Python + Selen teilnehmen!