Pandas fuskblad för datavetenskap i Python

⚡ Smart sammanfattning

Pandas fusklappar sammanfattar bibliotekets mest använda kommandon på en sida. Denna referens grupperar dem efter uppgift: installera, bygga serier och dataframes, importera filer, välja rader, rensa data, tillämpa funktioner och exportera resultat.

  • 🔘 Två strukturer: Serier innehåller en märkt dimension, medan DataFrame innehåller två med blandade kolumntyper.
  • ☑️ Importera vad som helst: read_csv, read_excel, read_sql, read_json och read_html laddar filer till en DataFrame.
  • Noggrant urval: loc väljer efter etikett, iloc efter position och booleska masker filtrerar rader efter villkor.
  • 🧪 Rengör pålitligt: isnull, dropna, fillna, drop_duplicates och ersätt handle-glapp och upprepade poster.
  • 🛠️ Kontrollera snabbt: form, info, dtyper och beskriv, sammanfatta struktur och statistik innan analysen påbörjas.
  • ⚠️ Versionsnotering: pandas 3.0 aktiverar Copy-on-Write som standard, så länkad tilldelning ger upphov till ett fel.

Pandas fuskblad för datavetenskap i Python

Vad är ett fusklappsark för Pandas?

Pandas-biblioteket levererar hundratals funktioner, men bara en liten delmängd förekommer i det dagliga arbetet. Pandor fusklapp är en referens på en sida som listar dessa kommandon, grupperade efter den uppgift de utför.

Den täcker serie- och dataframe-strukturer, import och export av filer, val och ordning av data, rensning av värden och tillämpning av funktioner. Varje avsnitt nedan kombinerar en kort förklaring med körbar kod, så sidan fungerar också som en uppdatering för dina färdigheter i dataanalys.

👉 Ladda ner PDF-filen av Cheat Sheet här

Så här installerar och importerar du Pandas

Två kommandon konfigurerar Pandas, och båda körs i en terminal eller en Jupyter Notebook cell.

Steg 1) Installera Pandas

Kör detta en gång per miljö; använd ett utropstecken som prefix i en anteckningsbokcell.

pip install pandas

Steg 2) Importera pandor

Importera paketet under alias pd, vilket varje exempel här förutsätter.

import pandas as pd

Du kan nu anropa Pandas funktioner för att manipulera, analysera och rensa data. Avsnitten nedan listar dem i den ordning du normalt använder dem.

Pandas datastrukturer

Pandas har två datastrukturer, Serier och DataFrameBåda är märkta arrayer och båda kan innehålla vilken datatyp som helst. Den enda skillnaden är dimensionaliteten: en serie är en endimensionell array och en dataframe är en tvådimensionell array byggd av numpy arrayer under.

Leverans Serier DataFrame
Mått En-dimensionell Tvådimensionell
Rymmer En enda märkt kolumn Många kolumner, blandade datatyper
Konstruktör pd.Series() pd.DataFrame()

1. Serie

Det är en endimensionell, märkt array. Den kan innehålla vilken datatyp som helst, och None blir ett saknat värde.

s = pd.Series([2, -4, 6, 3, None], index=['A', 'B', 'C', 'D', 'E'])

2. DataFrame

Det är en tvådimensionell märkt array. Den kan innehålla alla datatyper och kolumner av olika storlekar.

data = {'RollNo' : [101, 102, 75, 99],
        'Name' : ['Mithlesh', 'Ram', 'Rudra', 'Mithlesh'],
        'Course' : ['Nodejs', None, 'Nodejs', 'JavaScript']
}
df = pd.DataFrame(data, columns=['RollNo', 'Name', 'Course'])
df.head()

Det utskrivbara fusklappsarket nedan samlar samma kommandon på en sida.

Utskrivbart fusklappsark för Pandas med serie- och dataframe-kommandon

Importerar data

Pandor kan läsa många filtyper direkt in i en DataFrame. Varje läsare nedan returnerar en, och read_csv () är den mest använda.

# Import a CSV file pd
pd.read_csv(filename)

# Import a TSV file
pd.read_table(filename)

# Import a Excel file pd
pd.read_excel(filename)

# Import a SQL table/database
pd.read_sql(query, connection_object)

# Import a JSON file
pd.read_json(json_string)

# Import a HTML file
pd.read_html(url)

# From clipboard to read_table()
pd.read_clipboard()

# From dict
pd.DataFrame(dict)

Urval

Du kan välja element efter deras plats eller efter deras indexetikett. Samma hakparentessyntax väljer rader, kolumner och segment från båda strukturerna.

1. Serie

# Accessing one element from Series
s['D']

# Accessing all elements between two given indices
s['A':'C']

# Accessing all elements from starting till given index
s[:'C']

# Accessing all elements from given index till end
s['B':]

2. DataFrame

# Accessing one column df
df['Name']

# Accessing rows from after given row
df[1:]

# Accessing till before given row
df[:1]

# Accessing rows between two given rows
df[1:2]

Välj med boolesk indexering och inställning

Använda iloc och iat för heltalspositioner, och loc och at för etiketter.

1. Efter position

df.iloc[0, 1]

df.iat[0, 1]

2. Efter etikett

df.loc[[0],  ['Name']]

3. Efter etikett/position

df.loc[2] # Both are same
df.iloc[2]

4. Boolesk indexering

En boolesk mask behåller endast rader där villkoret är Sant. Det andra exemplet lägger till operatorn NOT ~, så returnerar den även värden som inte är över 1.

# Series s where value is > 1
s[(s > 0)]

# Series s where value is <-2 or >1
s[(s < -2) | ~(s > 1)]

# Use filter to adjust DataFrame
df[df['RollNo']>100]

# Set index a of Series s to 6
s['D'] = 10
s.head()

Rengöring av data

För Python För att rensa fusket kan du utföra följande operationer:

  • Byt namn på kolumner med hjälp av rename() metod.
  • Uppdatera värden med hjälp av at[] or iat[] metod för att komma åt och modifiera specifika element.
  • Skapa en kopia av en serie eller dataframe med hjälp av copy() metod.
  • Kontrollera NULL-värden med hjälp av isnull() metoden och släpp dem med hjälp av dropna() metod.
  • Kontrollera om det finns dubbletter med hjälp av duplicated() metoden. Släpp dem med hjälp av drop_duplicates() metod.
  • Ersätt NULL-värden med hjälp av fillna() metod med ett angivet värde.
  • Ersätt värden med hjälp av replace() metod.
  • Sortera värden med hjälp av sort_values() metod.
  • Rangordna värden med hjälp av rank() metod.
# Renaming columns
df.columns = ['a','b','c']
df.head()

# Mass renaming of columns
df = df.rename(columns={'RollNo': 'ID', 'Name': 'Student_Name'})

# Or use this edit in same DataFrame instead of in copy
df.rename(columns={'RollNo': 'ID', 'Name': 'Student_Name'}, inplace=True)
df.head()

# Counting duplicates in a column
df.duplicated(subset='Name')

# Removing entire row that has duplicate in given column
df.drop_duplicates(subset=['Name'])

# You can choose which one keep - by default is first
df.drop_duplicates(subset=['Name'], keep='last')

# Checks for Null Values
s.isnull()

# Checks for non-Null Values - reverse of isnull()
s.notnull()

# Checks for Null Values df
df.isnull()

# Checks for non-Null Values - reverse of isnull()
df.notnull()

# Drops all rows that contain null values
df.dropna()

# Drops all columns that contain null values
df.dropna(axis=1)

# Replaces all null values with 'Guru99'
df.fillna('Guru99')

# Replaces all null values with the mean
s.fillna(s.mean())

# Converts the datatype of the Series to float
s.astype(float)

# Replaces all values equal to 6 with 'Six'
s.replace(6,'Six')

# Replaces all 2 with 'Two' and 6 with 'Six'
s.replace([2,6],['Two','Six'])

# Drop from rows (axis=0)
s.drop(['B',  'D'])

# Drop from columns(axis=1)
df.drop('Name', axis=1)

# Sort by labels with axis
df.sort_index()

# Sort by values with axis
df.sort_values(by='RollNo')

# Ranking entries
df.rank()

# s1 is pointing to same Series as s
s1 = s

# s_copy of s, but not pointing same Series
s_copy = s.copy()

# df1 is pointing to same DataFrame as df
df1 = s

# df_copy of df, but not pointing same DataFrame
df_copy = df.copy()

Observera att s1 = s skapar bara ett andra namn för samma objekt, aldrig en kopia — det är därför copy() följer det.

Hämtar information

Du kan utföra dessa åtgärder för att hämta information:

  • Använd shape attribut för att hämta antalet rader och kolumner.
  • Använd head() or tail() metod för att hämta de första eller sista raderna som ett exempel.
  • Använd info(), describe() or dtypes metod för att erhålla information om datatyp, antal, medelvärde, standardavvikelse, minimi- och maximivärden.
  • Använd count(), min(), max(), sum(), mean() och median() metoder för att erhålla specifik statistisk information för värden.
  • Använd loc[] metod för att få en rad.
  • Använd groupby() metod för att tillämpa funktionen GROUP BY för att gruppera liknande värden i en kolumn i en DataFrame.

1. Grundläggande information

# Counting all elements in Series
len(s)

# Counting all elements in DataFrame
len(df)

# Prints number of rows and columns in dataframe
df.shape

# Prints first 10 rows by default, if no value set
df.head(10)

# Prints last 10 rows by default, if no value set
df.tail(10)

# For counting non-Null values column-wise
df.count()

# For range of index df
df.index

# For name of attributes/columns
df.columns

# Index, Data Type and Memory information
df.info()

# Datatypes of each column
df.dtypes

# Summary statistics for numerical columns
df.describe()

2. Sammanfattning

# For adding all values column-wise
df.sum()

# For min column-wise
df.min()

# For max column-wise
df.max()

# For mean value in number column
df.mean()

# For median value in number column
df.median()

# Count non-Null values
s.count()

# Count non-Null values
df.count()

# Return Series of given column
df['Name'].tolist()

# Name of columns
df.columns.tolist()

# Creating subset
df[['Name', 'Course']]

# Return number of values in each group
df.groupby('Name').count()

Tillämpa funktioner

apply() skickar en funktion över varje värde. Justeringsregler avgör sedan vad som händer när två objekt bara delar en del av sitt index.

# Define function
f = lambda x: x*5

# Apply this function on given Series - For each value
s.apply(f)

# Apply this function on given DataFrame - For each value
df.apply(f)

1. Intern datajustering

# NA values for indices that don't overlap
s2 = pd.Series([8, -1, 4],  index=['A',  'C',  'D'])
s + s2

2. Aritmetik Operamed fyllningsmetoder

# Fill values that don't overlap
s.add(s2, fill_value=0)

3. Filtrera, sortera och gruppera efter

Dessa funktioner kan användas för filtrering, sortering och grupperingping Serie- och DataFrame-objekt.

# Filter rows where column is greater than 100
df[df['RollNo']>100]

# Filter rows where 70 < column < 101
df[(df['RollNo'] > 70) & (df['RollNo'] < 101)]

# Sorts values in ascending order
s.sort_values()

# Sorts values in descending order
s.sort_values(ascending=False)

# Sorts values by RollNo in ascending order
df.sort_values('RollNo')

# Sorts values by RollNo in descending order
df.sort_values('RollNo', ascending=False)

Exportera data

Varje skribent nedan speglar en läsare från importsektionen, så en fil kan göras tur och retur utan extra verktyg.

# Export as a CSV file df
df.to_csv(filename)

# Export as a Excel file df
df.to_excel(filename)

# Export as a SQL table df
df.to_sql(table_name, connection_object)

# Export as a JSON file
df.to_json(filename)

# Export as a HTML table
df.to_html(filename)

# Write to the clipboard
df.to_clipboard()

Colab från Cheat Sheet

Varje kommando här kan köras i den tillhörande anteckningsboken: Pandas fuskblad – Python för Data Science.ipynb.

Vanliga frågor

Copy-on-Write är alltid aktiverat, strängar använder en dedikerad str dtype, och kedjad tilldelning på en filtrerad kopia genererar ChainedAssignmentError. Tilldela via .loc istället. Alla kommandon här körs fortfarande på pandor 3.0.

pd.merge() joins på delade nycklar på samma sätt som en SQL join gör det, df.join() justeras på indexet och pd.concat() staplar ramar. Använd merge för nycklar och concat för att lägga till.

df.pivot_table() omvandlar långa rader till ett brett aggregerat rutnät, pd.melt() vänder på det, och stack() eller unstack() flyttar en nivå mellan index och kolumner.

pd.to_datetime() konverterar text till datetime64, .dt-åtkomstaren exponerar år, månad och veckodag, och resample() aggregerar efter dag, vecka eller månad när den kolumnen är indexet.

Vektoriserade operationer körs i kompilerad C över hela arrayen, medan apply() anropar en Python funktion en gång per rad. Bytping En radvis apply() för ett vektoriserat uttryck är ofta tio gånger snabbare.

AI-assistenter mappar en enkel beskrivning av resultatet till konkreta anrop och föreslår groupby, merge eller pivot_table med de argument som varje anrop behöver. Verifiera förslaget på ett litet urval först.

Ja. GitHub Copilot omvandlar en kommentar som gruppera efter kurs och antal till fungerande Pandas-kod inuti JupyterBehandla utdata som ett utkast och kontrollera radantalet.

Skicka dtype till read_csv (), konvertera upprepade textkolumner till kategori, nedgradera siffror med pd.to_numeric och ladda i bitar med chunksize. df.info() rapporterar det verkliga fotavtrycket.

Sammanfatta detta inlägg med: