Sunum yükleniyor. Lütfen bekleyiniz

Sunum yükleniyor. Lütfen bekleyiniz

Bilgisayar Programlamasına ve Veri Analizine Giriş - VIII

Benzer bir sunumlar


... konulu sunumlar: "Bilgisayar Programlamasına ve Veri Analizine Giriş - VIII"— Sunum transkripti:

1 Bilgisayar Programlamasına ve Veri Analizine Giriş - VIII
Hüsnü Yenigün Sabancı Üniversitesi Lise Yaz Okulu 2015

2 Sabancı Üniversitesi Lise Yaz Okulu
Modül 8 için Planımız Gerçek TWEET verilerini inceleyeceğiz Sabancı Üniversitesi Lise Yaz Okulu

3 Hatırlatma: Liste Değişkeni
Birden fazla değeri tek bir değişkende tutabiliriz. Bu değişken tipine list adı verilir. Değerler arasında "," karakteri vardır, bir de [] kullanırız Örnek: liste1 = [0,2,3,4,5] liste2 = ['a', 'b', 'c', 'd'] liste3 = ["fizik", "kimya", "biyoloji", "tarih", "cografya", "turkce"] Listelerin elemanlarına sıra numaralarını kullanarak erişebiliriz print liste1[1], liste2[0], liste3[-4] 2 a biyoloji Sabancı Üniversitesi Lise Yaz Okulu

4 Hatırlatma: Liste Değişkeni
Örnek: liste3 = ["fizik", "kimya", "biyoloji", "tarih", "cografya", "turkce"] for ders in liste3: print ders >>> fizik kimya biyoloji tarih Cografya turkce Sabancı Üniversitesi Lise Yaz Okulu

5 Hatırlatma: Liste Değişkeni
split() fonksiyonu bir cümleyi bırakılan boşluklara göre parçalara ayırıp bir liste oluşturur. Örnek cumle = "Akilli adam aklini kullanir daha akilli adam baskalarinin da aklini kullanir " listem = cumle.split() print listem >>> ['Akilli', 'adam', 'aklini', 'kullanir', 'daha', 'akilli', 'adam', 'baskalarinin', 'da', 'aklini', 'kullanir'] Sabancı Üniversitesi Lise Yaz Okulu

6 Hatırlatma: Dictionary Veri Tipi
Listelere çok benzerler ama her değere belli bir ‘key’, yani anahtar atanır. Bu sözlüklerin içinde değer aramayı çok kolaylaştırır. Örnek: gunler = {'Pazartesi': 1, 'Sali':2, 'Carsamba':3, 'Persembe':4, 'Cuma':5, 'Cumartesi': 6, 'Pazar':7} print gunler['Pazartesi'] print gunler['Cumartesi'] maks = max(gunler, key=gunler.get) print maks gunler[maks] >>> 5 Pazar 7 Sabancı Üniversitesi Lise Yaz Okulu

7 readlines() fonksiyonu
Açılan dosyaların satırlarını bir listeye ekler Örnek: dosya1 = open("arkadaslar.txt", "r") listem = dosya1.readlines() print listem Erkay Savas Istanbul Mazhar Alanson Trabzon Barrack Obama Hawai Angela Merkel Almanya >>> ['Erkay Savas Istanbul\n', 'Mazhar Alanson Trabzon\n', 'Barrack Obama Hawai\n', 'Angela Merkel Almanya'] Sabancı Üniversitesi Lise Yaz Okulu

8 Sabancı Üniversitesi Lise Yaz Okulu
TWEET Dosyası Biz bu dosyayı turkcell.txt adı altında saklıyoruz. TWEET örnekleri: bu sarqi benden sana gelsin Tue Jul 22 13:06:39 EET medceziirnet Tesekkurler turkcell sen olmasan bana mesaj atanda yokk Tue Jul 22 14:03:28 EET #turkcell Yolladiginiz kol gibi faturaya sonsuz tesekkurler ? Tue Jul 22 16:54:10 EET TechnopatNet Turkcell Akilli Otomobil Platformu tanitiliyor #turkcell #akilliotomobil Fri Jul 11 10:43:26 EET Fehmi_Y_ Iyiki Turkcell liyim hepsi ni kullandim ama en güzel Turkcell Sun Jul 13 13:43:49 EET GkcAyhan Turkcell beni sesimden tanir he he tanir emin ol Wed Jul 09 13:53:02 EET çözüm bulmayan bir firmadan hizmet almak!!! #turkcell Thu Jul 17 22:45:40 EET Turkcell müsteri hizmetleri nerede ??? Turkcell e yakismiyor!! Tue Jul 22 10:02:26 EET Turkcell müsteri hizmetleri nerede ??? Turkcell e yakismiyor!! Tue Jul 22 10:02:27 EET Sabancı Üniversitesi Lise Yaz Okulu

9 Sabancı Üniversitesi Lise Yaz Okulu
Toplam Tweet Sayısı Bize verilen data dosyasında satır başına bir tweet geldiği söyleniyor. Toplam tweet sayısını bulan bir fonksiyon yazalım def toplamTweet(liste): liste_eleman_sayisi = len(liste) return liste_eleman_sayisi turkcell_tweet = open("turkcell.txt", "r") tweet_listesi = turkcell_tweet.readlines() turkcell_tweet.close() toplam_tweet_sayisi = toplamTweet(tweet_listesi) print toplam_tweet_sayisi Sabancı Üniversitesi Lise Yaz Okulu

10 Sabancı Üniversitesi Lise Yaz Okulu
Nasıl Yaptık? Öncelikle tweet veri (turkcell.txt) dosyasını açtık ‘tweet_listesi’ isimli bir değişkende (string listesi) saklıyoruz. Sonra da tweet_listesi isimli listeye her satır bir eleman olacak şekilde tweetleri yazdık ... turkcell_tweet = open("turkcell.txt", "r") tweet_listesi = turkcell_tweet.readlines() turkcell_tweet.close() toplam_tweet_sayisi = toplamTweet(tweet_listesi) print toplam_tweet_sayisi Sabancı Üniversitesi Lise Yaz Okulu

11 Sabancı Üniversitesi Lise Yaz Okulu
Toplam Retweet Sayısı Öncelikle elimizdeki veri dosyasını incelemeliyiz. Tweet’lerin nasıl yazıldığını öğrenmeli/anlamalıyız. Retweet’leri nasıl buluruz, ayırdedici özelliği nedir Aşağıda veri dosyamızdan üç tane örnek retweet var. Gizemsoylu34 Turkcell Müsteri Hizmetleri ??? Tue Jul 08 16:09:23 EET Cengiiz41 Ve sonunda. Fri Jul 11 20:51:16 EET T_ygmr Turkcell bayramimi niye kutlamadin askim. Mon Jul 28 21:38:52 EET Sabancı Üniversitesi Lise Yaz Okulu

12 Sabancı Üniversitesi Lise Yaz Okulu
Toplam Retweet Sayısı Aralarındaki ortak noktayı görebilen var mı? Gizemsoylu34 Turkcell Müsteri Hizmetleri ??? Tue Jul 08 16:09:23 EET Cengiiz41 Ve sonunda. Fri Jul 11 20:51:16 EET T_ygmr Turkcell bayramimi niye kutlamadin askim. Mon Jul 28 21:38:52 EET Sabancı Üniversitesi Lise Yaz Okulu

13 Sabancı Üniversitesi Lise Yaz Okulu
Ortak Notka Retweetlerde 2. kelime her zaman ‘RT’ Ve ondan bir sonraki kelime her zaman simgesi ile başlayıp bir kullanıcı ismi ile devam etmekte. Demek ki data dosyamızda herhangi bir satırın 2. kelimesi ‘RT’ ise ve 3. kelimesi ile başlıyorsa biz bu satırın bir retweet olduğunu söyleyebiliriz. Retweet olmayıp da bu koşulları sağlayan satırlar olabilir ama bunun olasılığı çok düşük olduğundan dikkate almıyoruz. Sabancı Üniversitesi Lise Yaz Okulu

14 O Zaman Kodumuzu Yazalım
def toplamReTweet(liste): sayi = 0 for tweet in liste: satir = tweet.split() if satir[1] == 'RT' and satir[2][0] sayi += 1 return sayi toplam_retweet_sayisi = toplamReTweet(tweet_listesi) print toplam_retweet_sayisi Sabancı Üniversitesi Lise Yaz Okulu

15 Sabancı Üniversitesi Lise Yaz Okulu
Nasıl Yaptık? Toplam retweet sayısını saklamak için ‘sayi’ değişkenini kullandık. Ne zaman bir retweet bulunursa o değişkene 1 ekledik Fonksiyonun sonunda sayı değişkenini geri döndürdük (return). def toplamReTweet(liste): sayi = 0 for tweet in liste: satir = tweet.split() if satir[1] == 'RT' and satir[2][0] sayi += 1 return sayi Sabancı Üniversitesi Lise Yaz Okulu

16 Sabancı Üniversitesi Lise Yaz Okulu
Nasıl Yaptık? Her bir tweet’i tek tek kontrol etmemiz gerekli. Binlerce defa aynı şeyi yazmak yerine for döngüsü kullanıyoruz. Kaç defa tekrar edeceği listemizin uzunluğuna bağlı. def toplamReTweet(liste): sayi = 0 for tweet in liste: satir = tweet.split() if satir[1] == 'RT' and satir[2][0] sayi += 1 return sayi Sabancı Üniversitesi Lise Yaz Okulu

17 Sabancı Üniversitesi Lise Yaz Okulu
Nasıl Yaptık? Tekrar edilecek işlem: her bir satırı retweet mi değil mi diye kontrol etmek Önce tek bir tweet’i alıp split() fonksiyonu ile parçalara (kelimelere) bölüyoruz. def toplamReTweet(liste): sayi = 0 for tweet in liste: satir = tweet.split() if satir[1] == 'RT' and satir[2][0] sayi += 1 return sayi Sabancı Üniversitesi Lise Yaz Okulu

18 Sabancı Üniversitesi Lise Yaz Okulu
En Çok Tweet Atılan Gün Tweet’lerin içerisinde tarih verisi bulunmakta, yani her birinin tek tek üstünden geçip hangi gün çıkarsa o güne +1 eklememiz gerekli. 7 tane farklı gün değişkeni yapmaktansa tek bir sözlük yaratıp günleri içlerine koyabiliriz. Twitter verimizde günlerimiz şu formatta: Mon, Tue, Wed, Thu, Fri, Sat, Sun Yani string tipi değişken kullanabiliriz Sabancı Üniversitesi Lise Yaz Okulu

19 Gün Verisi Tweet’in Neresinde?
Örnek Tweet’lere bakalım d_cuneyt Turkcell Sun Jul 06 22:32:33 EET Turkcell T50yi üretiyor... Fri Jul 11 16:09:42 EET areuslnbthn Tue Jul 01 00:50:18 EET Gün verisinin her bir satırda sondan 7. element/kelime olduğunu görebiliyoruz. Sabancı Üniversitesi Lise Yaz Okulu

20 Sabancı Üniversitesi Lise Yaz Okulu
O Zaman Başlayalım Elimizdeki bu bilgiler ile her bir tweet’in hangi gün atıldığını öğrenip o güne artı 1 ekleyebiliriz. Önce bir dictionary değişkeninin nasıl tanımlandığını hatırlayalım gun_sayaci = {'Mon': 0, 'Tue' : 0, 'Wed': 0, 'Thu': 0, 'Fri': 0, 'Sat': 0, 'Sun': 0} Burada her gun ismi ile bir sayaç tanımladık ve bu sayaçların hepsini 0’ladık. Çünkü henüz saymaya başlamadık Sabancı Üniversitesi Lise Yaz Okulu

21 Sabancı Üniversitesi Lise Yaz Okulu
Kod def MaxTweetGunu(liste): gun_sayaci = {'Mon': 0, 'Tue' : 0, 'Wed': 0, 'Thu': 0, 'Fri': 0, 'Sat': 0, 'Sun': 0} for tweet in liste: satir = tweet.split() gun = satir[-7] gun_sayaci[gun] += 1 max_tweet_gunu = max(gun_sayaci, key=gun_sayaci.get) return max_tweet_gunu + " "+ str(gun_sayaci[max_tweet_gunu]) Sabancı Üniversitesi Lise Yaz Okulu

22 Sabancı Üniversitesi Lise Yaz Okulu
Nasıl Yaptık? Öncelikle bir gün sayacı oluşturup her birinin değerini 0’a eşitliyoruz. def MaxTweetGunu(liste): gun_sayaci = {'Mon': 0, 'Tue' : 0, 'Wed': 0, 'Thu': 0, 'Fri': 0, 'Sat': 0, 'Sun': 0} Sabancı Üniversitesi Lise Yaz Okulu

23 Sabancı Üniversitesi Lise Yaz Okulu
Nasıl Yaptık? Sonra da önceki problemlerde olduğu gibi twitter verisinin her bir satırını parçalara/kelimelere ayırıyoruz. Bilindiği gibi sondan 7. element o tweet’in atıldığı gün oluyor. O günü sözlükte bulup sayaç değerine 1 ekliyoruz. for tweet in liste: satir = tweet.split() gun = satir[-7] gun_sayaci[gun] += 1 Sabancı Üniversitesi Lise Yaz Okulu

24 Sabancı Üniversitesi Lise Yaz Okulu
Nasıl Yaptık? max_tweet_gunu isimli değişkene en çok tweet atılan günü koyuyoruz. Oradaki ‘max()’ fonksiyonu sözlüğü aratıp en büyük değere sahip anahtarı geri döndürüyor. for tweet in liste: satir = tweet.split() gun = satir[-7] gun_sayaci[gun] += 1 max_tweet_gunu = max(gun_sayaci, key=gun_sayaci.get) Sabancı Üniversitesi Lise Yaz Okulu

25 Sabancı Üniversitesi Lise Yaz Okulu
Nasıl Yaptık? Sonunda da maksimum günü ve o günde kaç tane tweet atıldığını geri dönüyoruz. Sayaç değerini string veri tipine dönüştürmemiz gerekiyor Return değerini string yapmak istiyoruz çünkü for tweet in liste: satir = tweet.split() gun = satir[-7] gun_sayaci[gun] += 1 max_tweet_gunu = max(gun_sayaci, key=gun_sayaci.get) return max_tweet_gunu + " "+ str(gun_sayaci[max_tweet_gunu]) Sabancı Üniversitesi Lise Yaz Okulu

26 En Çok Tweet Atılan Saat Aralığı
Öncelikle tweet dosyasını inceliyoruz d_cuneyt Turkcell Sun Jul 06 22:32:33 EET Turkcell T50yi üretiyor... Fri Jul 11 16:09:42 EET areuslnbthn Tue Jul 01 00:50:18 EET Sabancı Üniversitesi Lise Yaz Okulu

27 Sabancı Üniversitesi Lise Yaz Okulu
Saat Bilgisi Nerede? Görüldüğü gibi her tweette sondan 4. element o tweet’in atıldığı saattir. Yine sözlük kullanılarak bu problem çözülebilir. Günümüzü altı saatlik aralıklara bölelim (kolaylık olsun diye) 0  00:00-06:00 6  06:00-12:00 12  12:00-18:00 18  18:00-00:00 saat_sayaci = {0:0, 6:0, 12:0, 18:0} Sabancı Üniversitesi Lise Yaz Okulu

28 Sabancı Üniversitesi Lise Yaz Okulu
Zaman Aralığı Sayacı def MaxTweetSaati(liste): saat_sayaci = {0:0, 6:0, 12:0, 18:0} for tweet in liste: satir = tweet.split() saat = satir[-4] saat = int(saat[0:2]) if saat >= 18: saat = 18 elif saat >=12: saat = 12 elif saat >= 6: saat = 6 else: saat = 0 saat_sayaci[saat] += 1 max_tweet_saati = max(saat_sayaci, key=saat_sayaci.get) return str(max_tweet_saati) + " " + str(saat_sayaci[max_tweet_saati]) Sabancı Üniversitesi Lise Yaz Okulu

29 Sabancı Üniversitesi Lise Yaz Okulu
Nasıl Yaptık? Sondan 4. element tweet’in atıldığı zaman oluyor. Dakikaları ve saniyeleri istemediğimizden 0. karakterden 2. karaktere kadar alıyoruz, yani sadece saati. for tweet in liste: satir = tweet.split() saat = satir[-4] saat = int(saat[0:2]) Sabancı Üniversitesi Lise Yaz Okulu

30 Sabancı Üniversitesi Lise Yaz Okulu
Nasıl Yaptık? if-elif-else ifadelerini kullanarak saat sayacını uygun bir şekilde arttırdık for satir in liste: if saat >= 18: saat = 18 elif saat >=12: saat = 12 elif saat >= 6: saat = 6 else: saat = 0 saat_sayaci[saat] += 1 Sabancı Üniversitesi Lise Yaz Okulu

31 Sabancı Üniversitesi Lise Yaz Okulu
Nasıl Yaptık? Saat sayaçlarındaki maksimum değeri bulduk Maksimum tweet’in atıldığı aralığı ve o saat aralığında kaç tweet atıldığını bulup fonksiyondan geri döndürdük for tweet in liste: max_tweet_saati = max(saat_sayaci, key=saat_sayaci.get) return str(max_tweet_saati) + " " + str(saat_sayaci[max_tweet_saati]) Sabancı Üniversitesi Lise Yaz Okulu


"Bilgisayar Programlamasına ve Veri Analizine Giriş - VIII" indir ppt

Benzer bir sunumlar


Google Reklamları