Python Pandas ile Temel İşlemler
Bölüm – 3 Sıralama-Sorting
Python Pandas ile temel işlemler yazı dizimize devam ediyoruz. Bu yazımızda meşhur İnternet movie database (imdb) sitesinden alına bir veri setini kullanacağız. Hemen veri setimizi indirip bir değişkene atayalım, head() metoduyla EDA yapalım. Bu EDA nedir? diye sormayın. Keşfedici veri analizi (exploratory data analysis); veri nedir, ne değildir şöyle bir fikir edineyim amacıyla incelemek demek. Biz bunu böyle basit tek tabloluk veri setlerinde head() metoduyla yapabiliyoruz. Kardeş bana ilk beş satırını bir göster bakalım sende ne var ne yok.
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…. |
Pandas ile Sıralama İşlemi
Bir çok zaman elimizdeki veriyi küçükten büyüğe veya alfabetik olarak sıralamak isteriz. Burada bunu nasıl yapacağımızı göreceğiz. Kullanacağımız metod sort_values() olacak. Burada şunu hatırlatmak istiyorum. Pandas’da temel olarak iki veri yapısı var birincisi tablonun hepsini oluşturan frame, tablonun bir sütununu oluşturan series. Burada kullanacağımız sort_values() metodu series sınıfına ait bir metod. Hemen isterseniz Python’un type() metoduyla bunu görelim:
type(filmListesi) pandas.core.frame.DataFrame type(filmListesi.title) pandas.core.series.Series
Yeşil olanlar veri tipini gösteriyor. Neyse detaya inmeden devam edelim. Şimdi title sütununu sıralayalım:
filmListesi.title.sort_values() 542 (500) Days of Summer 5 12 Angry Men 201 12 Years a Slave 698 127 Hours 110 2001: A Space Odyssey 910 2046 596 21 Grams 624 25th Hour 708 28 Days Later... 60 3 Idiots 225 3-Iron 570 300 555 3:10 to Yuma 427 4 Months, 3 Weeks and 2 Days 824 42 597 50/50 203 8 1/2 170 A Beautiful Mind ... 96 Yojimbo 280 Young Frankenstein 535 Zelig 955 Zero Dark Thirty 677 Zodiac 615 Zombieland 526 Zulu 864 [Rec] Name: title, dtype: object
Görüldüğü gibi A’dan Z’ye sıraladı. Tersinden sıralamak istiyorsak sort_values(ascending=False) metoda ascending=False şeklinde sadece bir argüman eklememiz yeterli olur.
Aynı metod ile tüm tabloyu (dataframe) bir sütunu baz alarak sıralayabiliriz.
filmListesi.sort_values('title')
star_rating | title | content_rating | genre | duration | actors_list | |
---|---|---|---|---|---|---|
542 | 7.8 | (500) Days of Summer | PG-13 | Comedy | 95 | [u’Zooey Deschanel’, u’Joseph Gordon-Levitt’, … |
5 | 8.9 | 12 Angry Men | NOT RATED | Drama | 96 | [u’Henry Fonda’, u’Lee J. Cobb’, u’Martin Bals… |
201 | 8.1 | 12 Years a Slave | R | Biography | 134 | [u’Chiwetel Ejiofor’, u’Michael Kenneth Willia… |
698 | 7.6 | 127 Hours | R | Adventure | 94 | [u’James Franco’, u’Amber Tamblyn’, u’Kate Mara’] |
110 | 8.3 | 2001: A Space Odyssey | G | Mystery | 160 | [u’Keir Dullea’, u’Gary Lockwood’, u’William S… |
910 | 7.5 | 2046 | R | Drama | 129 | [u’Tony Chiu Wai Leung’, u’Ziyi Zhang’, u’Faye… |
596 | 7.7 | 21 Grams | R | Crime | 124 | [u’Sean Penn’, u’Benicio Del Toro’, u’Naomi Wa… |
….
star_rating | title | content_rating | genre | duration | actors_list | |
---|---|---|---|---|---|---|
280 | 8.1 | Young Frankenstein | PG | Comedy | 106 | [u’Gene Wilder’, u’Madeline Kahn’, u’Marty Fel… |
535 | 7.8 | Zelig | PG | Comedy | 79 | [u’Woody Allen’, u’Mia Farrow’, u’Patrick Horg… |
955 | 7.4 | Zero Dark Thirty | R | Drama | 157 | [u’Jessica Chastain’, u’Joel Edgerton’, u’Chri… |
677 | 7.7 | Zodiac | R | Crime | 157 | [u’Jake Gyllenhaal’, u’Robert Downey Jr.’, u’M… |
615 | 7.7 | Zombieland | R | Comedy | 88 | [u’Jesse Eisenberg’, u’Emma Stone’, u’Woody Ha… |
526 | 7.8 | Zulu | UNRATED | Drama | 138 | [u’Stanley Baker’, u’Jack Hawkins’, u’Ulla Jac… |
864 | 7.5 | [Rec] | R | Horror | 78 | [u’Manuela Velasco’, u’Ferran Terraza’, u’Jorg… |
Gördüğümüz gibi tabloyu komple title sütununa göre sıraladık.
Pandas ile Birden Fazla Niteliği Aynı Anda Sıralama
Yukarıda sadece tek bir niteliğe göre sıralama yaptık. Şimdi aynı anda birden fazla niteliğe göre tabloyu nasıl sıralarız ona bakalım. Bunun için aynı metodu sort_values() kullanıyor olacağız Ancak içine koyacağımız argüman farklı olacak. Şimdi önce tür (genre) sonra film adı (title) olacak şekilde sıralayalım.
filmListesi.sort_values(['genre','title'])
star_rating | title | content_rating | genre | duration | actors_list | |
---|---|---|---|---|---|---|
570 | 7.8 | 300 | R | Action | 117 | [u’Gerard Butler’, u’Lena Headey’, u’David Wen… |
276 | 8.1 | A Fistful of Dollars | R | Action | 99 | [u’Clint Eastwood’, u’Gian Maria Volont\xe9′, … |
75 | 8.4 | Aliens | R | Action | 137 | [u’Sigourney Weaver’, u’Michael Biehn’, u’Carr… |
529 | 7.8 | Apocalypto | R | Action | 139 | [u’Gerardo Taracena’, u’Raoul Trujillo’, u’Dal… |
433 | 7.9 | Avatar | PG-13 | Action | 162 | [u’Sam Worthington’, u’Zoe Saldana’, u’Sigourn… |
801 | 7.6 | Batman | PG-13 | Action | 126 | [u’Michael Keaton’, u’Jack Nicholson’, u’Kim B… |
113 | 8.3 | Batman Begins | PG-13 | Action | 140 | [u’Christian Bale’, u’Michael Caine’, u’Ken Wa… |
573 | 7.8 | Battle Royale | NOT RATED | Action | 114 | [u’Tatsuya Fujiwara’, u’Aki Maeda’, u’Tar\xf4 … |
82 | 8.4 | Braveheart | R | Action | 177 | [u’Mel Gibson’, u’Sophie Marceau’, u’Patrick M… |
908 | 7.5 | Bullitt | PG | Action | 114 | [u’Steve McQueen’, u’Jacqueline Bisset’, u’Rob… |
517 | 7.8 | Captain America: The Winter Soldier | PG-13 | Action | 136 | [u’Chris Evans’, u’Samuel L. Jackson’, u’Scarl… |
380 | 8.0 | Casino Royale | PG-13 | Action | 144 | [u’Daniel Craig’, u’Eva Green’, u’Judi Dench’] |
437 | 7.9 | Crouching Tiger, Hidden Dragon | PG-13 | Action | 120 | [u’Yun-Fat Chow’, u’Michelle Yeoh’, u’Ziyi Zha… |
623 | 7.7 | Dawn of the Planet of the Apes | PG-13 | Action | 130 | [u’Gary Oldman’, u’Keri Russell’, u’Andy Serkis’] |
138 | 8.3 | Die Hard | R | Action | 131 | [u’Bruce Willis’, u’Alan Rickman’, u’Bonnie Be… |
778 | 7.6 | Die Hard: With a Vengeance | R | Action | 131 | [u’Bruce Willis’, u’Jeremy Irons’, u’Samuel L…. |
515 | 7.8 | Dirty Harry | R | Action | 102 | [u’Clint Eastwood’, u’Andrew Robinson’, u’Harr… |
349 | 8.0 | District 9 | R | Action | 112 | [u’Sharlto Copley’, u’David James’, u’Jason Co… |
391 | 8.0 | Edge of Tomorrow | PG-13 | Action | 113 | [u’Tom Cruise’, u’Emily Blunt’, u’Bill Paxton’] |
261 | 8.1 | Elite Squad | R | Action | 115 | [u’Wagner Moura’, u’Andr\xe9 Ramiro’, u’Caio J… |
239 | 8.1 | Elite Squad: The Enemy Within | UNRATED | Action | 115 | [u’Wagner Moura’, u’Irandhir Santos’, u’Andr\x… |
610 | 7.7 | Enter the Dragon | R | Action | 102 | [u’Bruce Lee’, u’John Saxon’, u’Jim Kelly’] |
815 | 7.6 | Equilibrium | R | Action | 107 | [u’Christian Bale’, u’Sean Bean’, u’Emily Wats… |
753 | 7.6 | Escape from Alcatraz | PG | Action | 112 | [u’Clint Eastwood’, u’Patrick McGoohan’, u’Rob… |
653 | 7.7 | Fearless | PG-13 | Action | 104 | [u’Jet Li’, u’Li Sun’, u’Yong Dong’] |
685 | 7.7 | First Blood | R | Action | 93 | [u’Sylvester Stallone’, u’Brian Dennehy’, u’Ri… |
619 | 7.7 | Forbidden Planet | PASSED | Action | 98 | [u’Walter Pidgeon’, u’Anne Francis’, u’Leslie … |
896 | 7.5 | From Russia with Love | APPROVED | Action | 115 | [u’Sean Connery’, u’Robert Shaw’, u’Lotte Lenya’] |
301 | 8.0 | Furious 7 | PG-13 | Action | 137 | [u’Vin Diesel’, u’Paul Walker’, u’Dwayne Johns… |
683 | 7.7 | Fury | R | Action | 134 | [u’Brad Pitt’, u’Shia LaBeouf’, u’Logan Lerman’] |
… | … | … | … | … | … | … |
38 | 8.6 | Rear Window | APPROVED | Mystery | 112 | [u’James Stewart’, u’Grace Kelly’, u’Wendell C… |
149 | 8.2 | Rebecca | NOT RATED | Mystery | 130 | [u’Laurence Olivier’, u’Joan Fontaine’, u’Geor… |
244 | 8.1 | Shutter Island | R | Mystery | 138 | [u’Leonardo DiCaprio’, u’Emily Mortimer’, u’Ma… |
249 | 8.1 | Sleuth | PG | Mystery | 138 | [u’Laurence Olivier’, u’Michael Caine’, u’Alec… |
894 | 7.5 | Source Code | PG-13 | Mystery | 93 | [u’Jake Gyllenhaal’, u’Michelle Monaghan’, u’V… |
467 | 7.9 | The 39 Steps | UNRATED | Mystery | 86 | [u’Robert Donat’, u’Madeleine Carroll’, u’Luci… |
292 | 8.1 | The Manchurian Candidate | APPROVED | Mystery | 126 | [u’Frank Sinatra’, u’Laurence Harvey’, u’Janet… |
863 | 7.5 | Three Days of the Condor | R | Mystery | 117 | [u’Robert Redford’, u’Faye Dunaway’, u’Cliff R… |
866 | 7.5 | To Catch a Thief | APPROVED | Mystery | 106 | [u’Cary Grant’, u’Grace Kelly’, u’Jessie Royce… |
264 | 8.1 | Twelve Monkeys | R | Mystery | 129 | [u’Bruce Willis’, u’Madeleine Stowe’, u’Brad P… |
76 | 8.4 | Vertigo | APPROVED | Mystery | 128 | [u’James Stewart’, u’Kim Novak’, u’Barbara Bel… |
145 | 8.2 | Blade Runner | R | Sci-Fi | 117 | [u’Harrison Ford’, u’Rutger Hauer’, u’Sean You… |
321 | 8.0 | Brazil | R | Sci-Fi | 132 | [u’Jonathan Pryce’, u’Kim Greist’, u’Robert De… |
408 | 7.9 | Gravity | PG-13 | Sci-Fi | 91 | [u’Sandra Bullock’, u’George Clooney’, u’Ed Ha… |
637 | 7.7 | The Butterfly Effect | R | Sci-Fi | 113 | [u’Ashton Kutcher’, u’Amy Smart’, u’Melora Wal… |
484 | 7.8 | The Day the Earth Stood Still | APPROVED | Sci-Fi | 92 | [u’Michael Rennie’, u’Patricia Neal’, u’Hugh M… |
902 | 7.5 | Frenzy | R | Thriller | 116 | [u’Jon Finch’, u’Barry Foster’, u’Alec McCowen’] |
728 | 7.6 | La piel que habito | R | Thriller | 120 | [u’Antonio Banderas’, u’Elena Anaya’, u’Jan Co… |
496 | 7.8 | Misery | R | Thriller | 107 | [u’James Caan’, u’Kathy Bates’, u’Richard Farn… |
350 | 8.0 | Shadow of a Doubt | APPROVED | Thriller | 108 | [u’Teresa Wright’, u’Joseph Cotten’, u’Macdona… |
848 | 7.5 | The Man Who Knew Too Much | PG | Thriller | 120 | [u’James Stewart’, u’Doris Day’, u’Brenda de B… |
59 | 8.5 | Django Unchained | R | Western | 165 | [u’Jamie Foxx’, u’Christoph Waltz’, u’Leonardo… |
107 | 8.3 | For a Few Dollars More | APPROVED | Western | 132 | [u’Clint Eastwood’, u’Lee Van Cleef’, u’Gian M… |
236 | 8.1 | High Noon | PG | Western | 85 | [u’Gary Cooper’, u’Grace Kelly’, u’Thomas Mitc… |
704 | 7.6 | High Plains Drifter | R | Western | 105 | [u’Clint Eastwood’, u’Verna Bloom’, u’Marianna… |
26 | 8.6 | Once Upon a Time in the West | PG-13 | Western | 175 | [u’Henry Fonda’, u’Charles Bronson’, u’Claudia… |
263 | 8.1 | Rio Bravo | NOT RATED | Western | 141 | [u’John Wayne’, u’Dean Martin’, u’Ricky Nelson’] |
6 | 8.9 | The Good, the Bad and the Ugly | NOT RATED | Western | 161 | [u’Clint Eastwood’, u’Eli Wallach’, u’Lee Van … |
421 | 7.9 | The Outlaw Josey Wales | PG | Western | 135 | [u’Clint Eastwood’, u’Sondra Locke’, u’Chief D… |
119 | 8.3 | Unforgiven | R | Western | 131 | [u’Clint Eastwood’, u’Gene Hackman’, u’Morgan … |
979 rows × 6 columns
Yukarıda gördüğümüz gibi önce genre niteliğine göre sıraladık sonra her bir genre için ayrı ayrı title niteliği sıralandı.
Pandas Dataframe Artan/Azalan Sıralama
Sıralamanın küçükten büyüğe mi yoksa büyükten küçüğe mi (artan/azalan) olacağını ascending=False veya True parametresiyle belirliyoruz. Eğer True ise ki varsayılan değerdir, artan sıralama olur. False ise azalan sıralama olur.
Diğer bölümde görüşmek üzere veriyle kalın…
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.