Uživatelské nástroje

Nástroje pro tento web


navody:pandas

Pandas

Příklady

import pandas as pd
df=pd.DataFrame({"jmeno": ["Karel", "Petr", "Pavel"],
                     "skore": [10, 15, 5],
                     "vek": [18, 22, 17]},
                     index=[10, 20, 30])
df=pd.DataFrame([["Karel", 10, 18],
                     ["Petr", 15, 22],
                     ["Pavel", 5, 17]],
                    columns=["jmeno", "skore", "vek"],
                    index=[10, 20, 30])
df=pd.DataFrame([{"jmeno": "Karel", "skore": 10, "vek": 18},
                     {"jmeno": "Petr", "skore": 15, "vek": 22},
                     {"jmeno": "Pavel", "skore": 5, "vek": 17}],
                    index=[10, 20, 30])
#     jmeno  skore  vek
# 10  Karel     10   18
# 20   Petr     15   22
# 30  Pavel      5   17

Analýza

df.dtypes
# jmeno    object
# skore     int64
# vek       int64
# dtype: object
df.count()
# jmeno    3
# skore    3
# vek      3
# dtype: int64
pocet_radku = len(df)
pocet_sloupcu = len(df.columns)
df.jmeno.value_counts()
# Karel    1
# Petr     1
# Pavel    1
# Name: jmeno, dtype: int64

Editace tabulky

Přejmenování sloupců

df1 = df.rename(columns={"jmeno": "krestni_jmeno"})
#    krestni_jmeno  skore  vek
# 10         Karel     10   18
# 20          Petr     15   22
# 30         Pavel      5   17

Změna typu sloupce

df1 = df.astype({"skore": float})
#     jmeno  skore  vek
# 10  Karel   10.0   18
# 20   Petr   15.0   22
# 30  Pavel    5.0   17

Nastavení zobrazení

zobrazí všechny řádky a sloupec má maximální délku 1000 znaků

pd.options.display.max_colwidth = 1000
pd.options.display.min_rows = None
pd.options.display.max_rows = None
display(df)
pd.reset_option("display.max_rows")
pd.reset_option("display.min_rows")
pd.reset_option("display.max_colwidth")

Filtrování řádků

vybere pouze první dva řádky

df1 = df.head(2)
#     jmeno  skore  vek
# 10  Karel     10   18
# 20   Petr     15   22

Podmínky

podle indexu

df1 = df.loc[[10, 20]]
#     jmeno  skore  vek
# 10  Karel     10   18
# 20   Petr     15   22
df1 = df[(df.jmeno == "Pavel") | (df.skore > 10)]
#     jmeno  skore  vek
# 20   Petr     15   22
# 30  Pavel      5   17
df1 = df[(df.vek.isin([17, 18])) & (df.skore > 8)]
#     jmeno  skore  vek
# 10  Karel     10   18
df1 = df[df.jmeno.astype(str).str.contains("are")]
#     jmeno  skore  vek
# 10  Karel     10   18

Filtrování sloupců

df1 = df[["jmeno", "skore"]]
#     jmeno  skore
# 10  Karel     10
# 20   Petr     15
# 30  Pavel      5
df1 = df.drop(["skore", "vek"], axis=1)
#     jmeno
# 10  Karel
# 20   Petr
# 30  Pavel

Přidání sloupce

df["title"] = df.apply((lambda x: "{} ({})".format(x.jmeno, x.vek)), axis=1)
#     jmeno  skore  vek       title
# 10  Karel     10   18  Karel (18)
# 20   Petr     15   22   Petr (22)
# 30  Pavel      5   17  Pavel (17)

vložení na pozici

df.insert(1, "prijmeni", ["Novák", "Novotný", "Nováček"])
#     jmeno prijmeni  skore  vek
# 10  Karel    Novák     10   18
# 20   Petr  Novotný     15   22
# 30  Pavel  Nováček      5   17

Řazení řádků

df1 = df.sort_values(by=["jmeno"])
#     jmeno  skore  vek
# 10  Karel     10   18
# 30  Pavel      5   17
# 20   Petr     15   22

Spojení tabulek

připojení sloupců

df2=pd.DataFrame({"skore2": [1, 2, 3, 4],
                      "skore3": [5, 8, 4, 7]},
                      index=[11, 20, 30, 40])
pd.concat([df, df2], axis=1)
#     jmeno  skore   vek  skore2  skore3
# 10  Karel   10.0  18.0     NaN     NaN
# 11    NaN    NaN   NaN     1.0     5.0
# 20   Petr   15.0  22.0     2.0     8.0
# 30  Pavel    5.0  17.0     3.0     4.0
# 40    NaN    NaN   NaN     4.0     7.
pd.concat([df, df2], axis=1, join="inner")
#     jmeno  skore  vek  skore2  skore3
# 20   Petr     15   22       2       8
# 30  Pavel      5   17       3       4

připojení řádků

df2=pd.DataFrame({"jmeno": ["Honza", "Esmeralda"],
                      "skore": [9, 20],
                      "vek": [31, 16]},
                      index=[11, 12])
pd.concat([df, df2], axis=0)
#         jmeno  skore  vek
# 10      Karel     10   18
# 20       Petr     15   22
# 30      Pavel      5   17
# 11      Honza      9   31
# 12  Esmeralda     20   16
navody/pandas.txt · Poslední úprava: 2022/09/13 10:04 autor: jules