Zurück


Einführung


Es passiert schon öfters das wir Spalten-, index- oder andere arten der -Benennung umändern wollen.
Jetzt zeigen wir dir, wie du mit Pandas solche Einträge zu etwas besserem umändern kannst.
Wir werden in dieser Einheit auch noch lernen wie man DataFrames und / oder Series zusammenfügt.

Umbenennen

Die erste Funktion die für diese Einheit wichtig wird ist rename(),
diese Funktion erlaubt dir den index Namen und / oder den Spaltennamen umzubenennen.
Wenn wir jetzt die points Spalte in unserem Dataset zu score ändern wollten, könnten wir das machen:

Aufklappen
import pandas as pd
pd.set_option('max_rows', 5)
reviews = pd.read_csv("../input/wine-reviews/winemag-data-130k-v2.csv", index_col=0)



reviews.rename(columns={'points': 'score'})

country

description

designation

score

price

province

region_1

region_2

taster_name

taster_twitter_handle

title

variety

winery

0

Italy

Aromas include tropical fruit, broom, brimston...

Vulkà Bianco

87

NaN

Sicily & Sardinia

Etna

NaN

Kerin O’Keefe

@kerinokeefe

Nicosia 2013 Vulkà Bianco (Etna)

White Blend

Nicosia

1

Portugal

This is ripe and fruity, a wine that is smooth...

Avidagos

87

15.0

Douro

NaN

NaN

Roger Voss

@vossroger

Quinta dos Avidagos 2011 Avidagos Red (Douro)

Portuguese Red

Quinta dos Avidagos

...

...

...

...

...

...

...

...

...

...

...

...

...

...

129969

France

A dry style of Pinot Gris, this is crisp with ...

NaN

90

32.0

Alsace

Alsace

NaN

Roger Voss

@vossroger

Domaine Marcel Deiss 2012 Pinot Gris (Alsace)

Pinot Gris

Domaine Marcel Deiss

129970

France

Big, rich and off-dry, this is powered by inte...

Lieu-dit Harth Cuvée Caroline

90

21.0

Alsace

Alsace

NaN

Roger Voss

@vossroger

Domaine Schoffit 2012 Lieu-dit Harth Cuvée Car...

Gewürztraminer

Domaine Schoffit


129971 Zeilen X 13 Spalten

rename() erlaubt dir auch index oder Spalten Werte mit einem index oder Spalten Keyword Bedingung.
Es unterstützt ein breites Sortiment an Inputformaten, aber die Python dictionary ist in diesem Fall am Praktischsten.
Hier verwenden wir rename() um ein paar Elemente des index umzubenennen:

reviews.rename(index={0: 'firstEntry', 1: 'secondEntry'})

country

description

designation

points

price

province

region_1

region_2

taster_name

taster_twitter_handle

title

variety

winery

firstEntry

Italy

Aromas include tropical fruit, broom, brimston...

Vulkà Bianco

87

NaN

Sicily & Sardinia

Etna

NaN

Kerin O’Keefe

@kerinokeefe

Nicosia 2013 Vulkà Bianco (Etna)

White Blend

Nicosia

secondEntry

Portugal

This is ripe and fruity, a wine that is smooth...

Avidagos

87

15.0

Douro

NaN

NaN

Roger Voss

@vossroger

Quinta dos Avidagos 2011 Avidagos Red (Douro)

Portuguese Red

Quinta dos Avidagos

...

...

...

...

...

...

...

...

...

...

...

...

...

...

129969

France

A dry style of Pinot Gris, this is crisp with ...

NaN

90

32.0

Alsace

Alsace

NaN

Roger Voss

@vossroger

Domaine Marcel Deiss 2012 Pinot Gris (Alsace)

Pinot Gris

Domaine Marcel Deiss

129970

France

Big, rich and off-dry, this is powered by inte...

Lieu-dit Harth Cuvée Caroline

90

21.0

Alsace

Alsace

NaN

Roger Voss

@vossroger

Domaine Schoffit 2012 Lieu-dit Harth Cuvée Car...

Gewürztraminer

Domaine Schoffit


129971 Zeilen x 13 Spalten

Du wirst wahrscheinlich öfters Spalten umbenennen, aber index Umbenennung kommt selten vor.
Dafür gibt es eine praktische Funktion namens set_index().

Sowohl der Zeilenindex als auch der Spaltenindex haben ihr eigenes Namensattribut,
dafür können wir die dafür gemachte rename_axis() Methode verwenden:

reviews.rename_axis("wines", axis='rows').rename_axis("fields", axis='columns')

fields

country

description

designation

points

price

province

region_1

region_2

taster_name

taster_twitter_handle

title

variety

winery

wines

0

Italy

Aromas include tropical fruit, broom, brimston...

Vulkà Bianco

87

NaN

Sicily & Sardinia

Etna

NaN

Kerin O’Keefe

@kerinokeefe

Nicosia 2013 Vulkà Bianco (Etna)

White Blend

Nicosia

1

Portugal

This is ripe and fruity, a wine that is smooth...

Avidagos

87

15.0

Douro

NaN

NaN

Roger Voss

@vossroger

Quinta dos Avidagos 2011 Avidagos Red (Douro)

Portuguese Red

Quinta dos Avidagos

...

...

...

...

...

...

...

...

...

...

...

...

...

...

129969

France

A dry style of Pinot Gris, this is crisp with ...

NaN

90

32.0

Alsace

Alsace

NaN

Roger Voss

@vossroger

Domaine Marcel Deiss 2012 Pinot Gris (Alsace)

Pinot Gris

Domaine Marcel Deiss

129970

France

Big, rich and off-dry, this is powered by inte...

Lieu-dit Harth Cuvée Caroline

90

21.0

Alsace

Alsace

NaN

Roger Voss

@vossroger

Domaine Schoffit 2012 Lieu-dit Harth Cuvée Car...

Gewürztraminer

Domaine Schoffit


129971 Zeilen x 13 Spalten

Zusammenfügen


Für manche Operationen am Dataset, müssen wir das DataFrame und / oder Series auf nicht trivialen Arten kombinieren.
Pandas hat drei wesentliche Lösungen dafür, concat(), join() und merge() (concat ist das einfachste und merge das Komplexeste).
Wir können mit join() das was merge() kann auch machen aber noch einfacher, daher lassen wir für diese Einheit merge() aus.

Die einfachste Zusammenfügungsmethode ist concat(),
wenn es eine liste von Elementen kriegt wird es alles zusammentuen und in ein anderes DataFrame packen.

Das ist äußerst nützlich, wenn wir Daten in einem andere DataFrame oder einer anderen Series wollen und wir es in unsere Spalten packen wollen.
Hier ist ein Youtube Video für Datasets (YouTube Videos dataset) wo die Daten des Herkunft Staates untersucht und danach aufgeteilt werden.
Wenn wir über mehrere Länder gleichzeitig erfahren wollen können wir sie alle mit concat() zusammenpacken:

canadian_youtube = pd.read_csv("../input/youtube-new/CAvideos.csv")
british_youtube = pd.read_csv("../input/youtube-new/GBvideos.csv")

pd.concat([canadian_youtube, british_youtube])

video_id

trending_date

title

channel_title

category_id

publish_time

tags

views

likes

dislikes

comment_count

thumbnail_link

comments_disabled

ratings_disabled

video_error_or_removed

description

0

n1WpP7iowLc

17.14.11

Eminem - Walk On Water (Audio) ft. Beyoncé

EminemVEVO

10

2017-11-10T17:00:03.000Z

Eminem|"Walk"|"On"|"Water"|"Aftermath/Shady/In...

17158579

787425

43420

125882

https://i.ytimg.com/vi/n1WpP7iowLc/default.jpg

False

False

False

Eminem's new track Walk on Water ft. Beyoncé i...

1

0dBIkQ4Mz1M

17.14.11

PLUSH - Bad Unboxing Fan Mail

iDubbbzTV

23

2017-11-13T17:00:00.000Z

plush|"bad unboxing"|"unboxing"|"fan mail"|"id...

1014651

127794

1688

13030

https://i.ytimg.com/vi/0dBIkQ4Mz1M/default.jpg

False

False

False

STill got a lot of packages. Probably will las...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

38914

-DRsfNObKIQ

18.14.06

Eleni Foureira - Fuego - Cyprus - LIVE - First...

Eurovision Song Contest

24

2018-05-08T20:32:32.000Z

Eurovision Song Contest|"2018"|"Lisbon"|"Cypru...

14317515

151870

45875

26766

https://i.ytimg.com/vi/-DRsfNObKIQ/default.jpg

False

False

False

Eleni Foureira represented Cyprus at the first...

38915

4YFo4bdMO8Q

18.14.06

KYLE - Ikuyo feat. 2 Chainz & Sophia Black [A...

SuperDuperKyle

10

2018-05-11T04:06:35.000Z

Kyle|"SuperDuperKyle"|"Ikuyo"|"2 Chainz"|"Soph...

607552

18271

274

1423

https://i.ytimg.com/vi/4YFo4bdMO8Q/default.jpg

False

False

False

Debut album 'Light of Mine' out now: http://ky...


79797 Zeilen x 16 Spalten

join() befindet sich zwischen merge() und concat() von der Kompexität.
join() lässt dich verschiedene DataFrame objects mit einem gleichen index zusammenfügen.
Wenn wir jetzt versuchen Videos die zugleich in Kanada und in dem Vereinigten Königreich populär waren herauszufinden,
könnten wir das so machen:

left = canadian_youtube.set_index(['title', 'trending_date'])
right = british_youtube.set_index(['title', 'trending_date'])

left.join(right, lsuffix='_CAN', rsuffix='_UK')

video_id_CAN

channel_title_CAN

category_id_CAN

publish_time_CAN

tags_CAN

views_CAN

likes_CAN

dislikes_CAN

comment_count_CAN

thumbnail_link_CAN

...

tags_UK

views_UK

likes_UK

dislikes_UK

comment_count_UK

thumbnail_link_UK

comments_disabled_UK

ratings_disabled_UK

video_error_or_removed_UK

description_UK

title

trending_date

!! THIS VIDEO IS NOTHING BUT PAIN !! | Getting Over It - Part 7

18.04.01

PNn8sECd7io

Markiplier

20

2018-01-03T19:33:53.000Z

getting over it|"markiplier"|"funny moments"|"...

835930

47058

1023

8250

https://i.ytimg.com/vi/PNn8sECd7io/default.jpg

...

NaN

NaN

NaN

NaN

NaN

NaN

NaN

NaN

NaN

NaN

#1 Fortnite World Rank - 2,323 Solo Wins!

18.09.03

DvPW66IFhMI

AlexRamiGaming

20

2018-03-09T07:15:52.000Z

PS4 Battle Royale|"PS4 Pro Battle Royale"|"Bat...

212838

5199

542

11

https://i.ytimg.com/vi/DvPW66IFhMI/default.jpg

...

NaN

NaN

NaN

NaN

NaN

NaN

NaN

NaN

NaN

NaN

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

🚨 BREAKING NEWS 🔴 Raja Live all Slot Channels Welcome 🎰

18.07.05

Wt9Gkpmbt44

TheBigJackpot

24

2018-05-07T06:58:59.000Z

Slot Machine|"win"|"Gambling"|"Big Win"|"raja"...

28973

2167

175

10

https://i.ytimg.com/vi/Wt9Gkpmbt44/default.jpg

...

NaN

NaN

NaN

NaN

NaN

NaN

NaN

NaN

NaN

NaN

🚨Active Shooter at YouTube Headquarters - LIVE BREAKING NEWS COVERAGE

18.04.04

Az72jrKbANA

Right Side Broadcasting Network

25

2018-04-03T23:12:37.000Z

YouTube shooter|"YouTube active shooter"|"acti...

103513

1722

181

76

https://i.ytimg.com/vi/Az72jrKbANA/default.jpg

...

NaN

NaN

NaN

NaN

NaN

NaN

NaN

NaN

NaN

NaN


40900 Zeilen x 28 Spalten

linkcode

Die lsuffix und rsuffix Bedingungen sind äußerst wichtig in dieser Operation,
da die Daten den selben Spaltennamen in den Britischen und in den Kanadischen Datasets sind.
Wenn das nicht der Fall wäre, dann bräuchten wir lsuffix und rsuffix nicht.