Python Pandas ile Temel İşlemler
Bölüm 5 – String
Bu yazımızda string ağırlıklı örnekler vereceğim. Veri hazırlığı ve temizliğinde string düzenlemeleri sıkça yapılmaktadır. Büyük harf küçük harf, boşlukları temizleme, içinde geçeni bulma vb. Konuyla ilgili çok daha fazla bilgi şu adresten bulunabilir.
Veri setimizi indirelim.
import pandas as pd filmListesi = pd.read_csv("https://raw.githubusercontent.com/erkansirin78/datasets/master/imdb_1000.csv") filmListesi.head()
star_rating | title | content_rating | genre | duration | actors_list | |
---|---|---|---|---|---|---|
0 | 9.3 | The Shawshank Redemption | R | Crime | 142 | [u’Tim Robbins’, u’Morgan Freeman’, u’Bob Gunt… |
1 | 9.2 | The Godfather | R | Crime | 175 | [u’Marlon Brando’, u’Al Pacino’, u’James Caan’] |
2 | 9.1 | The Godfather: Part II | R | Crime | 200 | [u’Al Pacino’, u’Robert De Niro’, u’Robert Duv… |
3 | 9.0 | The Dark Knight | PG-13 | Action | 152 | [u’Christian Bale’, u’Heath Ledger’, u’Aaron E… |
4 | 8.9 | Pulp Fiction | R | Crime | 154 | [u’John Travolta’, u’Uma Thurman’, u’Samuel L…. |
Tablomuzun ilk beş satırı yukarıda görüldüğü gibidir. Hadi basitten başlayalım ve title_upper adında yeni bir sütuna title büyük harflerle koyalım.
filmListesi['title_buyuk'] = filmListesi.title.str.upper() filmListesi.head()
star_rating | title | content_rating | genre | duration | actors_list | title_buyuk | |
---|---|---|---|---|---|---|---|
0 | 9.3 | The Shawshank Redemption | R | Crime | 142 | [u’Tim Robbins’, u’Morgan Freeman’, u’Bob Gunt… | THE SHAWSHANK REDEMPTION |
1 | 9.2 | The Godfather | R | Crime | 175 | [u’Marlon Brando’, u’Al Pacino’, u’James Caan’] | THE GODFATHER |
2 | 9.1 | The Godfather: Part II | R | Crime | 200 | [u’Al Pacino’, u’Robert De Niro’, u’Robert Duv… | THE GODFATHER: PART II |
3 | 9.0 | The Dark Knight | PG-13 | Action | 152 | [u’Christian Bale’, u’Heath Ledger’, u’Aaron E… | THE DARK KNIGHT |
4 | 8.9 | Pulp Fiction | R | Crime | 154 | [u’John Travolta’, u’Uma Thurman’, u’Samuel L…. | PULP FICTION |
Şimdi içinde John Travolta içeren satırları görelim.
filmListesi[filmListesi.actors_list.str.contains('John Travolta')]
star_rating | title | content_rating | genre | duration | actors_list | title_buyuk | |
---|---|---|---|---|---|---|---|
4 | 8.9 | Pulp Fiction | R | Crime | 154 | [u’John Travolta’, u’Uma Thurman’, u’Samuel L…. | PULP FICTION |
Yukarıda bir önceki yazıda ele aldığımız filtrelemeyi kullandık.
Şimdi biraz replace() metoduyla birkaç örnek yapalım. actor_list‘te köşeli parantezler hiç güzel görünmüyor. Okunabilirliği arttırmak adına onları kaldıralım.
filmListesi.actors_list.str.replace('[','').str.replace(']','') 0 u'Tim Robbins', u'Morgan Freeman', u'Bob Gunton' 1 u'Marlon Brando', u'Al Pacino', u'James Caan' 2 u'Al Pacino', u'Robert De Niro', u'Robert Duvall' 3 u'Christian Bale', u'Heath Ledger', u'Aaron Ec... 4 u'John Travolta', u'Uma Thurman', u'Samuel L. ... 5 u'Henry Fonda', u'Lee J. Cobb', u'Martin Balsam' 6 u'Clint Eastwood', u'Eli Wallach', u'Lee Van C... 7 u'Elijah Wood', u'Viggo Mortensen', u'Ian McKe... 8 u'Liam Neeson', u'Ralph Fiennes', u'Ben Kingsley' 9 u'Brad Pitt', u'Edward Norton', u'Helena Bonha... 10 u'Elijah Wood', u'Ian McKellen', u'Orlando Bloom' 11 u'Leonardo DiCaprio', u'Joseph Gordon-Levitt',... 12 u'Mark Hamill', u'Harrison Ford', u'Carrie Fis... 13 u'Tom Hanks', u'Robin Wright', u'Gary Sinise' 14 u'Elijah Wood', u'Ian McKellen', u'Viggo Morte...
Gördüğümüz gibi köşeli parantezler gitti. Şimdi köşeli parantezlere ilaveten u’ karakterlerini de boşlukla değiştirelim.
filmListesi.actors_list.str.replace("u'",'').str.replace('[','').str.replace(']','').str.replace("'",'') 0 Tim Robbins, Morgan Freeman, Bob Gunton 1 Marlon Brando, Al Pacino, James Caan 2 Al Pacino, Robert De Niro, Robert Duvall 3 Christian Bale, Heath Ledger, Aaron Eckhart 4 John Travolta, Uma Thurman, Samuel L. Jackson 5 Henry Fonda, Lee J. Cobb, Martin Balsam 6 Clint Eastwood, Eli Wallach, Lee Van Cleef 7 Elijah Wood, Viggo Mortensen, Ian McKellen 8 Liam Neeson, Ralph Fiennes, Ben Kingsley 9 Brad Pitt, Edward Norton, Helena Bonham Carter 10 Elijah Wood, Ian McKellen, Orlando Bloom 11 Leonardo DiCaprio, Joseph Gordon-Levitt, Ellen... 12 Mark Hamill, Harrison Ford, Carrie Fisher 13 Tom Hanks, Robin Wright, Gary Sinise 14 Elijah Wood, Ian McKellen, Viggo Mortensen
Gördüğünüz gibi zincirleme şekilde birden fazla str.replace() kullanabiliyoruz.
Pandas Series’den Pandas Dataframe Oluşturmak
Pandas series dediğimiz Pandas Dataframe (tablo) bir sütunu aslında. Ancak dataframe ce series in farklı metodları olduğundan zaman zaman seriesi dataframe dönüştürmek durumunda kalabiliyoruz. Bunun için basti bir yöntem var: to_dataframe()
actor_series = filmListesi.actors_list.to_dataframe()
Yukarıdaki komutla actor_series adında bir Pandas Dataframe oluşturduk.
Mehaba. yukarıda türkçe sütun isimlerini değiştirmeden önce sütun sayısını 2’ye düşürdüğünüz için uyarı veriyor. Dolayısıyla sütun sayısını düşürmeden isim değişikliği yaptım. Bilginize. paylaşımlarınız için tşk ederim.
Merhaba. Haklısınız. Düzeltme yaptım. İki sütun için dataframe’i “ufo_two_cols” ismiyle tuttuk. Çok teşekkürler.