[{"data":1,"prerenderedAt":3765},["ShallowReactive",2],{"sanity-x3leea":3},[4,1265,2205],{"body":5,"categories":1254,"excerpt":1256,"mainImage":1257,"publishedAt":1262,"slug":1263,"title":1264},[6,22,31,47,56,64,76,88,100,112,121,130,138,143,152,160,163,166,172,179,182,185,191,198,201,204,210,213,216,222,229,232,235,241,248,250,253,259,266,269,276,284,292,300,308,317,329,337,345,359,371,379,386,389,395,402,406,414,422,430,442,454,466,478,489,497,505,529,537,545,553,561,578,594,602,618,626,638,646,672,697,725,733,741,749,757,765,773,781,789,796,804,812,819,822,829,836,839,851,888,899,930,941,972,983,1013,1024,1032,1040,1052,1060,1072,1080,1092,1100,1112,1120,1128,1136,1148,1156,1164,1172,1180,1188,1196,1208,1220,1232,1240,1247],{"_key":7,"_type":8,"children":9,"markDefs":20,"style":21},"23f57e6d27ff","block",[10,15],{"_key":11,"_type":12,"marks":13,"text":14},"215aadcc0704","span",[],"Veri Analizi Bölüm 2 | ",{"_key":16,"_type":12,"marks":17,"text":19},"578cda38edf0",[18],"strong","Veri Hazırlama Ve Temizleme Teknikleri",[],"h1",{"_key":23,"_type":8,"children":24,"markDefs":29,"style":30},"e3ad71a6491c",[25],{"_key":26,"_type":12,"marks":27,"text":28},"4d4b9da71eb8",[],"\nEksik Veri Yönetimi Nedir?",[],"normal",{"_key":32,"_type":8,"children":33,"markDefs":46,"style":30},"86bbe07fb826",[34,38,42],{"_key":35,"_type":12,"marks":36,"text":37},"ce7321ec1a88",[],"Veri analizi ve makine öğrenimi süreçlerinde karşılaşılan en yaygın problemlerden biri, eksik verilerdir. ",{"_key":39,"_type":12,"marks":40,"text":41},"844d3042d044",[18],"Eksik veri",{"_key":43,"_type":12,"marks":44,"text":45},"e287e65232a4",[],", bir veri setinde belirli gözlemler için mevcut olmayan veya boş bırakılan değerleri ifade eder. Örneğin, bir öğrenci anketinde bazı sorulara cevap verilmemişse, bu durum eksik veri olarak değerlendirilir.",[],{"_key":48,"_type":8,"children":49,"markDefs":54,"style":55},"b7f0d1bb0a79",[50],{"_key":51,"_type":12,"marks":52,"text":53},"4054a11277fb",[],"Neden Eksik Verilerle Karşılaşırız?",[],"h2",{"_key":57,"_type":8,"children":58,"markDefs":63,"style":30},"6f6a2da9cc1b",[59],{"_key":60,"_type":12,"marks":61,"text":62},"d4f8ba35ab63",[],"Eksik verilerin oluşmasının çeşitli nedenleri vardır:",[],{"_key":65,"_type":8,"children":66,"markDefs":75,"style":30},"918e7728575e",[67,71],{"_key":68,"_type":12,"marks":69,"text":70},"e09565abf5ab",[18],"İnsan Hatası",{"_key":72,"_type":12,"marks":73,"text":74},"3d44b05d0c79",[],": Veri toplama sürecinde, katılımcıların bazı soruları atlaması ya da yanlışlıkla boş bırakması sonucunda eksik veriler oluşabilir.",[],{"_key":77,"_type":8,"children":78,"markDefs":87,"style":30},"1f33e918a956",[79,83],{"_key":80,"_type":12,"marks":81,"text":82},"73d788c86679",[18],"Teknik Sorunlar",{"_key":84,"_type":12,"marks":85,"text":86},"0ec45e4e725b",[],": Veri toplama araçlarının arızalanması veya iletişim kesintileri gibi teknik problemler de eksik verilere yol açabilir.",[],{"_key":89,"_type":8,"children":90,"markDefs":99,"style":30},"6ec17678bb21",[91,95],{"_key":92,"_type":12,"marks":93,"text":94},"c50e8829208c",[18],"Anket Tasarımı",{"_key":96,"_type":12,"marks":97,"text":98},"deab40e38084",[],": Bazı anketlerde, belirli soruların yalnızca bazı katılımcılara yönlendirilmesi durumunda, o sorular için eksik veriler oluşabilir.",[],{"_key":101,"_type":8,"children":102,"markDefs":111,"style":30},"e63fd27aec51",[103,107],{"_key":104,"_type":12,"marks":105,"text":106},"4b0ed5c8ad43",[18],"Zamanla Değişim",{"_key":108,"_type":12,"marks":109,"text":110},"c33cac6b01fa",[],": Zaman içinde değişen koşullar, belirli verilerin artık geçerli olmamasına neden olabilir.",[],{"_key":113,"_type":8,"children":114,"markDefs":119,"style":120},"8d3bf44b5fa6",[115],{"_key":116,"_type":12,"marks":117,"text":118},"6d820882059c",[18],"ÖRNEK VERİ KÜMESİNE ULAŞMAK İÇİN TIKLAYIN",[],"h4",{"_key":122,"_type":8,"children":123,"markDefs":128,"style":129},"c0dc38249f93",[124],{"_key":125,"_type":12,"marks":126,"text":127},"1e60cd4cd896",[],"Kodlarla Eksik Veri Tespit Etme ve Yönetme Yöntemleri Konularını Pekiştirelim",[],"h5",{"_key":131,"_type":8,"children":132,"markDefs":137,"style":129},"9f2f5bec696e",[133],{"_key":134,"_type":12,"marks":135,"text":136},"2007dbaae7a1",[],"Silme, Doldurma, İnterpolasyon Konularını İrdeleyelim",[],{"_key":139,"_type":140,"code":141,"language":142},"1d7b625e9a9d","code","import pandas as pd  # Pandas kütüphanesini 'pd' kısaltmasıyla kullanmak için içe aktarıyoruz\nimport numpy as np   # numpy Kütüphanesini içe aktarıyoruz\n# Veriyi okuyalım\ndata = pd.read_csv('Buraya Dataset Konumunuzu Giriniz')\n\n# Yukarıdaki satırda, pandas'ın 'read_csv' fonksiyonu kullanılarak CSV formatındaki veri dosyası okunuyor\n# 'data' değişkeni, bu CSV dosyasındaki tüm veriyi pandas DataFrame formatında saklıyor\n\n# İlk birkaç satıra göz atalım\nprint(data.head())  \n# 'data.head()' fonksiyonu, verinin ilk 5 satırını ekrana yazdırıyor\n# Bu, veri setindeki başlıkları ve bazı örnek satırları hızlıca gözden geçirmek için kullanışlı\n\n# Verinin genel yapısını kontrol edelim\nprint(data.info())  \n# 'data.info()' fonksiyonu, veri setindeki sütunların isimleri, sütunlardaki veri tipleri\n# ve her bir sütunda kaç tane eksik veri olup olmadığını özetleyen bir çıktı verir\n# Bu, veri setinin genel yapısı hakkında hızlı bir bilgi sağlar","python",{"_key":144,"_type":8,"children":145,"markDefs":150,"style":151},"ff1b22278591",[146],{"_key":147,"_type":12,"marks":148,"text":149},"429185abc802",[],"Aşağıdaki gibi bir çıktı gelecektir",[],"blockquote",{"_key":153,"_type":8,"children":154,"markDefs":159,"style":30},"aeeed0594d5b",[155],{"_key":156,"_type":12,"marks":157,"text":158},"0967514fd0e7",[],"",[],{"_key":161,"_type":140,"code":162},"b58b719e0faa"," Hours_Studied  Attendance Parental_Involvement Access_to_Resources  \\\n0             23          84                  Low                High   \n1             19          64                  Low              Medium   \n2             24          98               Medium              Medium   \n3             29          89                  Low              Medium   \n4             19          92               Medium              Medium   \n\n  Extracurricular_Activities  Sleep_Hours  Previous_Scores Motivation_Level  \\\n0                         No            7               73              Low   \n1                         No            8               59              Low   \n2                        Yes            7               91           Medium   \n3                        Yes            8               98           Medium   \n4                        Yes            6               65           Medium   \n\n  Internet_Access  Tutoring_Sessions Family_Income Teacher_Quality  \\\n0             Yes                  0           Low          Medium   \n1             Yes                  2        Medium          Medium   \n2             Yes                  2        Medium          Medium   \n3             Yes                  1        Medium          Medium   \n4             Yes                  3        Medium            High   \n\n  School_Type Peer_Influence  Physical_Activity Learning_Disabilities  \\\n0      Public       Positive                  3                    No   \n1      Public       Negative                  4                    No   \n2      Public        Neutral                  4                    No   \n3      Public       Negative                  4                    No   \n4      Public        Neutral                  4                    No   \n\n  Parental_Education_Level Distance_from_Home  Gender  Exam_Score  \n0              High School               Near    Male          67  \n1                  College           Moderate  Female          61  \n2             Postgraduate               Near    Male          74  \n3              High School           Moderate    Male          71  \n4                  College               Near  Female          70  \n\u003Cclass 'pandas.core.frame.DataFrame'>\nRangeIndex: 6607 entries, 0 to 6606\nData columns (total 20 columns):",{"_key":164,"_type":140,"code":165,"language":142},"dc1c38c18ffd","# Eksik verilerin kontrol edilmesi\nmissing_data = data.isnull().sum()  \n# 'isnull()' fonksiyonu her bir hücrede eksik (NaN) veri olup olmadığını kontrol eder.\n# 'sum()' fonksiyonu ise her bir sütunda kaç tane eksik veri olduğunu sayar.\n# Sonuç olarak, her sütundaki eksik değerlerin sayısını gösteren bir pandas Series elde edilir.\n\nprint(missing_data[missing_data > 0])  \n# Sadece eksik veri içeren sütunları ekrana yazdırıyoruz.\n# 'missing_data > 0' ifadesi, sadece eksik veri sayısı 0'dan büyük olan sütunları filtreler.\n# Bu sayede, eksik veri bulunan sütunlar ve bu sütunlardaki eksik veri miktarları gösterilir.",{"_key":167,"_type":8,"children":168,"markDefs":171,"style":151},"ae28a22cea7b",[169],{"_key":147,"_type":12,"marks":170,"text":149},[],[],{"_key":173,"_type":8,"children":174,"markDefs":178,"style":30},"82391055a9a3",[175],{"_key":176,"_type":12,"marks":177,"text":158},"c844690fe3df",[],[],{"_key":180,"_type":140,"code":181},"56f7823978ee","Teacher_Quality             78\nParental_Education_Level    90\nDistance_from_Home          67\ndtype: int64",{"_key":183,"_type":140,"code":184,"language":142},"f0203dd20074","# Teacher_Quality sütunundaki veri tiplerini kontrol edelim\nprint(data['Teacher_Quality'].dtype)\n# 'dtype' özelliği, belirtilen sütundaki verilerin türünü döndürür.\n# Bu satırda 'Teacher_Quality' sütunundaki verilerin tipini (örneğin int, float, object) kontrol ediyoruz.\n\n# Sayısal olmayan değerleri kontrol edelim\nnon_numeric_values = data[~data['Teacher_Quality'].apply(lambda x: str(x).replace('.', '', 1).isdigit())]\n# İlk olarak, 'apply' fonksiyonu kullanarak her bir değeri kontrol ediyoruz.\n# 'str(x).replace('.', '', 1)' ifadesi, sayısal değerlere izin verirken, ondalık sayıların kontrol edilmesini sağlar.\n# 'isdigit()' fonksiyonu, verinin tamamen sayılardan oluşup oluşmadığını kontrol eder.\n# '~' işareti, mantıksal NOT operatörüdür. Yani, sayısal olmayan değerler seçilir.\n\n# Sayısal olmayan 'Teacher_Quality' sütunundaki değerleri yazdıralım\nprint(non_numeric_values['Teacher_Quality'])\n# Yukarıda filtrelenen sayısal olmayan değerleri içeren satırları ekrana yazdırıyoruz.",{"_key":186,"_type":8,"children":187,"markDefs":190,"style":151},"09d5ca185532",[188],{"_key":147,"_type":12,"marks":189,"text":149},[],[],{"_key":192,"_type":8,"children":193,"markDefs":197,"style":30},"96bbe192e510",[194],{"_key":195,"_type":12,"marks":196,"text":158},"67e0481405c2",[],[],{"_key":199,"_type":140,"code":200},"3191cf30cd40","object\n0       Medium\n1       Medium\n2       Medium\n3       Medium\n4         High\n         ...  \n6602    Medium\n6603      High\n6604    Medium\n6605    Medium\n6606    Medium\nName: Teacher_Quality, Length: 6607, dtype: object",{"_key":202,"_type":140,"code":203,"language":142},"d300c8b982f5","# Teacher_Quality kategorilerini sayısal değerlere dönüştürelim\nquality_mapping = {'Low': 1, 'Medium': 2, 'High': 3}\n# 'Teacher_Quality' sütunundaki kategorik değerleri sayısal değerlere eşliyoruz:\n# 'Low' -> 1, 'Medium' -> 2, 'High' -> 3\n\ndata['Teacher_Quality'] = data['Teacher_Quality'].map(quality_mapping)\n# 'map' fonksiyonu, belirtilen sözlük ('quality_mapping') kullanılarak her bir kategoriyi sayısal değere dönüştürür.\n# 'Teacher_Quality' sütunundaki her bir 'Low', 'Medium' ve 'High' değeri, sırasıyla 1, 2 ve 3 olarak değiştirilir.\n\n# Dönüştürülmüş veriyi kontrol edelim\nprint(data['Teacher_Quality'].head())\n# Dönüştürülmüş 'Teacher_Quality' sütununun ilk 5 satırını ekrana yazdırıyoruz.\n# Bu, kategorik değerlerin sayısal değerlere doğru dönüştürülüp dönüştürülmediğini hızlıca kontrol etmek için kullanılır.",{"_key":205,"_type":8,"children":206,"markDefs":209,"style":151},"0a79b3a0c08d",[207],{"_key":147,"_type":12,"marks":208,"text":149},[],[],{"_key":211,"_type":140,"code":212},"24cf91cd2004","0    2.0\n1    2.0\n2    2.0\n3    2.0\n4    3.0\nName: Teacher_Quality, dtype: float64",{"_key":214,"_type":140,"code":215,"language":142},"99859cc8ae8a","# Orijinal Teacher_Quality sütununu tekrar kontrol edelim\nprint(data['Teacher_Quality'].head(10))\n# İlk 10 satırdaki 'Teacher_Quality' sütununun şu anki halini ekrana yazdırıyoruz.\n# Eğer kategorik değerler sayısal değerlere dönüştürüldüyse, bu aşamada sayısal sonuçlar görmeliyiz.\n\n# Veri setini yeniden okuyarak orijinal veriyi geri getirelim\ndata = pd.read_csv('/kaggle/input/student-performance-factors/StudentPerformanceFactors.csv')\n# CSV dosyasını yeniden okuyoruz, böylece orijinal 'Teacher_Quality' sütunu tekrar kategorik değerlerle gelir.\n# Önceden yapılan değişiklikleri sıfırlamış oluyoruz.\n\n# Orijinal Teacher_Quality sütunundaki benzersiz (unique) değerleri kontrol edelim\nprint(data['Teacher_Quality'].unique())\n# 'unique()' fonksiyonu, 'Teacher_Quality' sütunundaki tüm benzersiz kategorik değerleri gösterir.\n# Bu sayede bu sütunda hangi kategorilerin olduğunu görebiliriz (örneğin 'Low', 'Medium', 'High').",{"_key":217,"_type":8,"children":218,"markDefs":221,"style":151},"4e46ff0d117c",[219],{"_key":147,"_type":12,"marks":220,"text":149},[],[],{"_key":223,"_type":8,"children":224,"markDefs":228,"style":30},"5c1856c8f7c1",[225],{"_key":226,"_type":12,"marks":227,"text":158},"a1ef02bba210",[],[],{"_key":230,"_type":140,"code":231},"fd90b31ee3fe","0    2.0\n1    2.0\n2    2.0\n3    2.0\n4    3.0\n5    2.0\n6    2.0\n7    3.0\n8    1.0\n9    3.0\nName: Teacher_Quality, dtype: float64\n['Medium' 'High' 'Low' nan]",{"_key":233,"_type":140,"code":234,"language":142},"95d53e6f128b","# Teacher_Quality kategorilerini sayısal değerlere dönüştürelim\nquality_mapping = {'Low': 1, 'Medium': 2, 'High': 3}\n# 'Teacher_Quality' sütunundaki kategorik değerleri sayısal değerlere eşliyoruz.\n# 'Low' -> 1, 'Medium' -> 2, 'High' -> 3 şeklinde bir sözlük (mapping) oluşturuyoruz.\n\ndata['Teacher_Quality'] = data['Teacher_Quality'].map(quality_mapping)\n# 'map' fonksiyonu, 'Teacher_Quality' sütunundaki her bir kategorik değeri, yukarıda tanımladığımız\n# sayısal karşılıklara dönüştürüyor.\n\n# Dönüştürülmüş veriyi kontrol edelim\nprint(data['Teacher_Quality'].head())\n# Dönüştürülmüş 'Teacher_Quality' sütununun ilk 5 satırını ekrana yazdırıyoruz.\n# Bu, kategorik değerlerin doğru bir şekilde sayısal değerlere dönüştürülüp dönüştürülmediğini kontrol etmek için kullanılır.",{"_key":236,"_type":8,"children":237,"markDefs":240,"style":151},"7ed6578d59db",[238],{"_key":147,"_type":12,"marks":239,"text":149},[],[],{"_key":242,"_type":8,"children":243,"markDefs":247,"style":30},"026463b48b08",[244],{"_key":245,"_type":12,"marks":246,"text":158},"0a33bc97b71d",[],[],{"_key":249,"_type":140,"code":212},"847ffe08332b",{"_key":251,"_type":140,"code":252,"language":142},"33c3e0e7d433","# Parental_Education_Level sütunundaki eksik verileri mod ile dolduralım\ndata['Parental_Education_Level'] = data['Parental_Education_Level'].fillna(data['Parental_Education_Level'].mode()[0])\n# 'Parental_Education_Level' sütunundaki eksik veriler, en sık görülen değer (mod) ile dolduruluyor.\n\n# Teacher_Quality sütunundaki eksik verileri doldurmadan önce, sütunda eksik olmayan (geçerli) verilerin olup olmadığını kontrol edelim\nif data['Teacher_Quality'].notnull().sum() > 0:\n    # Eğer sütun tamamen boş değilse, mod (en sık görülen değer) ile doldur\n    data['Teacher_Quality'] = data['Teacher_Quality'].fillna(data['Teacher_Quality'].mode()[0])\nelse:\n    # Eğer sütun tamamen boşsa, varsayılan bir değer olan 'Medium' (sayı karşılığı 2) ile doldur\n    data['Teacher_Quality'] = data['Teacher_Quality'].fillna(2)  # 2: 'Medium' kategorisinin sayısal karşılığı\n\n# Kategorik verileri sayısal değerlere dönüştürelim (Distance_from_Home)\ndata['Distance_from_Home'] = data['Distance_from_Home'].map({\n    'Near': 1,       # Yakın mesafe için 1\n    'Moderate': 2,   # Orta mesafe için 2\n    'Far': 3,        # Uzak mesafe için 3\n    'Unknown': 0     # Bilinmeyen mesafe için 0 atanıyor\n})\n# 'Distance_from_Home' sütunundaki kategorik değerler sayısal değerlere dönüştürülüyor.\n\n# Distance_from_Home sütunundaki eksik verileri \"Moderate\" (sayı karşılığı 2) ile dolduralım\ndata['Distance_from_Home'] = data['Distance_from_Home'].fillna(2)\n# 'Distance_from_Home' sütunundaki eksik veriler, orta mesafe ('Moderate') değeriyle dolduruluyor.\n\n# Doluluk oranlarını kontrol edelim\nteacher_fill_rate = data['Teacher_Quality'].notnull().mean() * 100\ndistance_fill_rate = data['Distance_from_Home'].notnull().mean() * 100\n# Doluluk oranları hesaplanarak yüzdeye çevriliyor. 'notnull()' eksik olmayan verileri kontrol eder.\n\nprint(f\"Teacher_Quality sütununun doluluk oranı: %{teacher_fill_rate:.2f}\")\nprint(f\"Distance_from_Home sütununun doluluk oranı: %{distance_fill_rate:.2f}\")\n# 'Teacher_Quality' ve 'Distance_from_Home' sütunlarının dolu hücre oranları ekrana yazdırılıyor.\n\n# Teacher_Quality ve Distance_from_Home sütunlarındaki ilk birkaç satırı kontrol edelim\nprint(data['Teacher_Quality'].head())\nprint(data['Distance_from_Home'].head())\n# 'Teacher_Quality' ve 'Distance_from_Home' sütunlarındaki ilk 5 satır ekrana yazdırılıyor.\n\n# Eksik veri olup olmadığını tekrar kontrol edelim\nprint(data.isnull().sum())\n# Tüm veri setinde eksik (NaN) değer olup olmadığını kontrol ediyoruz.",{"_key":254,"_type":8,"children":255,"markDefs":258,"style":151},"ddc4ba78c0e9",[256],{"_key":147,"_type":12,"marks":257,"text":149},[],[],{"_key":260,"_type":8,"children":261,"markDefs":265,"style":30},"149fb7f5ac51",[262],{"_key":263,"_type":12,"marks":264,"text":158},"0a4c2f13708d",[],[],{"_key":267,"_type":140,"code":268},"253f836aaa45","Teacher_Quality sütununun doluluk oranı: %100.00\nDistance_from_Home sütununun doluluk oranı: %100.00\n0    2.0\n1    2.0\n2    2.0\n3    2.0\n4    3.0\nName: Teacher_Quality, dtype: float64\n0    1.0\n1    2.0\n2    1.0\n3    2.0\n4    1.0\nName: Distance_from_Home, dtype: float64\nHours_Studied                 0\nAttendance                    0\nParental_Involvement          0\nAccess_to_Resources           0\nExtracurricular_Activities    0\nSleep_Hours                   0\nPrevious_Scores               0\nMotivation_Level              0\nInternet_Access               0\nTutoring_Sessions             0\nFamily_Income                 0\nTeacher_Quality               0\nSchool_Type                   0\nPeer_Influence                0\nPhysical_Activity             0\nLearning_Disabilities         0\nParental_Education_Level      0\nDistance_from_Home            0\nGender                        0\nExam_Score                    0\ndtype: int64",{"_key":270,"_type":8,"children":271,"markDefs":275,"style":30},"60e384a88c24",[272],{"_key":273,"_type":12,"marks":274,"text":158},"3e06f1b68e0a",[],[],{"_key":277,"_type":8,"children":278,"markDefs":283,"style":55},"8c394cfc1fc8",[279],{"_key":280,"_type":12,"marks":281,"text":282},"2bfe9f440dcb",[],"Neler Yaptık?",[],{"_key":285,"_type":8,"children":286,"markDefs":291,"style":30},"80980ef9bbc3",[287],{"_key":288,"_type":12,"marks":289,"text":290},"74ffb45b89eb",[],"Şu ana kadar yazdığımız kod, öğrenci performansını etkileyen faktörleri incelemek için verileri hazırlama ve temizleme işlerini kapsıyor. İlk önce veri setini okuduk ve içindeki eksik değerleri kontrol ettik. Eksik olan yerleri doldurmak için en sık görülen değerleri (mod) kullandık, böylece verimizdeki boşlukları doldurduk. Kategorik verileri sayısal değerlere dönüştürdük, böylece makine öğrenimi modellerinde kullanmaya uygun hale getirdik. Tüm bu adımlar, verimizi daha sağlıklı ve anlamlı hale getirdi. Son olarak, her işlemin ardından verimizin doluluk oranlarını kontrol ettik ki eksik değer sorunu kalmadığından emin olalım. Şimdi analiz yapmaya veya model oluşturmaya geçebiliriz!",[],{"_key":293,"_type":8,"children":294,"markDefs":299,"style":55},"7db66fce21ba",[295],{"_key":296,"_type":12,"marks":297,"text":298},"440aaa5b27ee",[],"Aykırı Değer Analizi ve Tespiti",[],{"_key":301,"_type":8,"children":302,"markDefs":307,"style":30},"e6188656a0a8",[303],{"_key":304,"_type":12,"marks":305,"text":306},"74ee26db315a",[],"Aykırı değer analizleri, verilerde normalden sapmalar olup olmadığını anlamak için yapılan bir işlemdir. Günlük hayatımızda bu, anormal veya beklenmedik bir durumu fark etmek gibidir. Mesela, bir öğrenci sürekli ortalama 60–70 alırken bir sınavda 10 alıyorsa, bu bir aykırı değer olabilir. Aykırı değerler, analiz sırasında önemli bilgiler verebilir; örneğin bir hata, ölçümde bir sorun ya da gerçekten farklı bir durum olduğunu gösterebilir. Bu yüzden, verilerdeki bu uç noktaları bulup analiz etmek, doğru sonuçlar elde etmek ve yanlış yönlendirmelerden kaçınmak için çok önemlidir. Kodlamaya geçerek bu konuyu daha iyi anlayabiliriz",[],{"_key":309,"_type":8,"children":310,"markDefs":315,"style":316},"9d01594bf21c",[311],{"_key":312,"_type":12,"marks":313,"text":314},"e300a530dd66",[],"İlk adım olarak IQR yöntemini uygulayacağız:",[],"h3",{"_key":318,"_type":8,"children":319,"markDefs":328,"style":30},"6ea51fbbd438",[320,324],{"_key":321,"_type":12,"marks":322,"text":323},"e6967d947b41",[18],"IQR (Interquartile Range) Yöntemi:",{"_key":325,"_type":12,"marks":326,"text":327},"83befaad2c4a",[]," Bu yöntem, verilerin %25'lik ve %75'lik dilimlerini kullanarak aykırı değerleri tespit eder.",[],{"_key":330,"_type":8,"children":331,"markDefs":336,"style":30},"a3265d72a7b1",[332],{"_key":333,"_type":12,"marks":334,"text":335},"2ca75d4e4bcb",[],"IQR (Interquartile Range), veri setindeki yayılımı ölçmek için kullanılan bir yöntemdir ve özellikle aykırı değerleri tespit etmekte işe yarar. IQR, verilerin ortasında kalan %50'lik bölümünün dağılımını gösterir ve “çeyrekler arası aralık” olarak bilinir.",[],{"_key":338,"_type":8,"children":339,"markDefs":344,"style":30},"7cd44d842a53",[340],{"_key":341,"_type":12,"marks":342,"text":343},"fd5133634370",[],"IQR’yi bulmak için önce veriyi dört eşit parçaya ayırırız:",[],{"_key":346,"_type":8,"children":347,"level":356,"listItem":357,"markDefs":358,"style":30},"389c0a38b51d",[348,352],{"_key":349,"_type":12,"marks":350,"text":351},"60b2f0d1eeed",[18],"Q1 (Birinci Çeyrek):",{"_key":353,"_type":12,"marks":354,"text":355},"711262216b85",[]," Verilerin en küçük %25'lik kısmının sınırını gösterir. Diğer bir deyişle, verilerin %25'i bu değerin altında, %75'i bu değerin üstündedir.",1,"bullet",[],{"_key":360,"_type":8,"children":361,"level":356,"listItem":357,"markDefs":370,"style":30},"dc166b6778af",[362,366],{"_key":363,"_type":12,"marks":364,"text":365},"ce7ea6463918",[18],"Q3 (Üçüncü Çeyrek):",{"_key":367,"_type":12,"marks":368,"text":369},"02822342bf61",[]," Verilerin %75'lik kısmının sınırını gösterir. Yani, verilerin %75'i bu değerin altında, %25'i bu değerin üstündedir.",[],{"_key":372,"_type":8,"children":373,"markDefs":378,"style":30},"0d798cf183cb",[374],{"_key":375,"_type":12,"marks":376,"text":377},"242e31c6d055",[],"Hours_Studied, Exam_Score, Previous_Scores sütunlarını kullanarak aykırı değer analizlerimizi oluşturalım",[],{"_key":380,"_type":8,"children":381,"markDefs":385,"style":30},"d228a4caa0d2",[382],{"_key":383,"_type":12,"marks":384,"text":158},"e5c55675b838",[],[],{"_key":387,"_type":140,"code":388,"language":142},"b79f04448d57","# IQR (Interquartile Range) yöntemiyle aykırı değerleri tespit eden fonksiyon\ndef detect_outliers_iqr(data, column):\n    # 1. çeyrek (Q1) değerini hesapla\n    Q1 = np.percentile(data[column], 25)\n    \n    # 3. çeyrek (Q3) değerini hesapla\n    Q3 = np.percentile(data[column], 75)\n    \n    # IQR'yi (Q3 - Q1) hesapla\n    IQR = Q3 - Q1\n    \n    # Aykırı değerlerin alt sınırını hesapla (Q1 - 1.5 * IQR)\n    lower_bound = Q1 - 1.5 * IQR\n    \n    # Aykırı değerlerin üst sınırını hesapla (Q3 + 1.5 * IQR)\n    upper_bound = Q3 + 1.5 * IQR\n    \n    # Aykırı değerler: sütundaki değerlerin alt veya üst sınırı aşanlarını seç\n    outliers = data[(data[column] \u003C lower_bound) | (data[column] > upper_bound)]\n    \n    # Aykırı değerleri geri döndür\n    return outliers\n\n# Hours_Studied sütunundaki aykırı değerleri IQR yöntemi ile tespit edelim\noutliers_hours_studied = detect_outliers_iqr(data, 'Hours_Studied')\n\n# Tespit edilen aykırı değerlerin ilk 5 sonucunu yazdır\nprint(\"IQR Yöntemi ile Hours_Studied Aykırı Değerler:\")\nprint(outliers_hours_studied.head())\n\n# Exam_Score sütunundaki aykırı değerleri IQR yöntemi ile tespit edelim\noutliers_exam_score = detect_outliers_iqr(data, 'Exam_Score')\n\n# Tespit edilen aykırı değerlerin ilk 5 sonucunu yazdır\nprint(\"IQR Yöntemi ile Exam_Score Aykırı Değerler:\")\nprint(outliers_exam_score.head())",{"_key":390,"_type":8,"children":391,"markDefs":394,"style":151},"18be6ffa104d",[392],{"_key":147,"_type":12,"marks":393,"text":149},[],[],{"_key":396,"_type":8,"children":397,"markDefs":401,"style":30},"865fa96079d2",[398],{"_key":399,"_type":12,"marks":400,"text":158},"a0fc85b2b44e",[],[],{"_key":403,"_type":140,"code":404,"language":405},"557393258485","IQR Yöntemi ile Hours_Studied Aykırı Değerler:\n      Hours_Studied  Attendance Parental_Involvement Access_to_Resources  \\\n209              43          86                 High              Medium   \n262               1          69                 High              Medium   \n478              38          86                  Low                High   \n1061              3          85                  Low                High   \n1101              3          62               Medium                 Low   \n\n     Extracurricular_Activities  Sleep_Hours  Previous_Scores  \\\n209                         Yes            7               97   \n262                         Yes            6               97   \n478                         Yes            7               79   \n1061                         No            8               73   \n1101                         No            6               67   \n\n     Motivation_Level Internet_Access  Tutoring_Sessions Family_Income  \\\n209            Medium             Yes                  2        Medium   \n262            Medium             Yes                  1           Low   \n478               Low             Yes                  3           Low   \n1061              Low             Yes                  2           Low   \n1101           Medium             Yes                  1           Low   \n\n     Teacher_Quality School_Type Peer_Influence  Physical_Activity  \\\n209             High      Public       Positive                  1   \n262           Medium      Public       Positive                  3   \n478           Medium      Public       Negative                  3   \n1061          Medium     Private        Neutral                  3   \n1101          Medium      Public       Negative                  3   \n\n     Learning_Disabilities Parental_Education_Level Distance_from_Home  \\\n209                     No              High School               Near   \n262                     No              High School               Near   \n478                     No              High School               Near   \n1061                    No              High School               Near   \n1101                    No              High School               Near   \n\n      Gender  Exam_Score  \n209   Female          78  \n262   Female          61  \n478     Male          73  \n1061    Male          62  \n1101    Male          55  \nIQR Yöntemi ile Exam_Score Aykırı Değerler:\n     Hours_Studied  Attendance Parental_Involvement Access_to_Resources  \\\n94              18          89                 High              Medium   \n106             31         100               Medium              Medium   \n113             35          99                 High                High   \n209             43          86                 High              Medium   \n217             19          70               Medium                 Low   \n\n    Extracurricular_Activities  Sleep_Hours  Previous_Scores Motivation_Level  \\\n94                         Yes            4               73           Medium   \n106                         No            7               59           Medium   \n113                        Yes            7               85              Low   \n209                        Yes            7               97           Medium   \n217                         No            7               54             High   \n\n    Internet_Access  Tutoring_Sessions Family_Income Teacher_Quality  \\\n94              Yes                  3          High          Medium   \n106             Yes                  2          High            High   \n113             Yes                  2        Medium            High   \n209             Yes                  2        Medium            High   \n217             Yes                  0        Medium          Medium   \n\n    School_Type Peer_Influence  Physical_Activity Learning_Disabilities  \\\n94      Private       Positive                  2                    No   \n106      Public       Positive                  5                    No   \n113     Private        Neutral                  2                    No   \n209      Public       Positive                  1                    No   \n217      Public       Positive                  2                   Yes   \n\n    Parental_Education_Level Distance_from_Home  Gender  Exam_Score  \n94                   College               Near  Female         100  \n106             Postgraduate           Moderate    Male          76  \n113             Postgraduate               Near  Female          79  \n209              High School               Near  Female          78  \n217              High School           Moderate    Male          89  ","text",{"_key":407,"_type":8,"children":408,"markDefs":413,"style":30},"4e50b9196d08",[409],{"_key":410,"_type":12,"marks":411,"text":412},"aba71421d66f",[],"Yaptığımız IQR yöntemi ile aykırı değer analizine göre:",[],{"_key":415,"_type":8,"children":416,"markDefs":421,"style":120},"f433ea71ef30",[417],{"_key":418,"_type":12,"marks":419,"text":420},"4d977ced477d",[],"1. Hours_Studied için Aykırı Değerler:",[],{"_key":423,"_type":8,"children":424,"markDefs":429,"style":30},"97630eb9ae6c",[425],{"_key":426,"_type":12,"marks":427,"text":428},"6e849c145e2f",[],"Aykırı değer olarak tespit edilen veriler şunlar:",[],{"_key":431,"_type":8,"children":432,"level":356,"listItem":357,"markDefs":441,"style":30},"d9a026fe7cf4",[433,437],{"_key":434,"_type":12,"marks":435,"text":436},"3840f52abc12",[18],"209:",{"_key":438,"_type":12,"marks":439,"text":440},"7cada8776f1d",[]," 43 saat çalışma, yüksek katılım, yüksek ebeveyn katılımı, yüksek motivasyon seviyesi.",[],{"_key":443,"_type":8,"children":444,"level":356,"listItem":357,"markDefs":453,"style":30},"992bbfa7bc9e",[445,449],{"_key":446,"_type":12,"marks":447,"text":448},"b583231ebba3",[18],"262:",{"_key":450,"_type":12,"marks":451,"text":452},"a5b1a60b90bb",[]," 1 saat çalışma, yüksek katılım, düşük ebeveyn katılımı, düşük motivasyon seviyesi.",[],{"_key":455,"_type":8,"children":456,"level":356,"listItem":357,"markDefs":465,"style":30},"1e37eade095b",[457,461],{"_key":458,"_type":12,"marks":459,"text":460},"b4f9588ec2e4",[18],"478:",{"_key":462,"_type":12,"marks":463,"text":464},"528328d539f8",[]," 38 saat çalışma, düşük ebeveyn katılımı, yüksek motivasyon seviyesi.",[],{"_key":467,"_type":8,"children":468,"level":356,"listItem":357,"markDefs":477,"style":30},"e36304731ad8",[469,473],{"_key":470,"_type":12,"marks":471,"text":472},"177a2c6dfd6c",[18],"1061:",{"_key":474,"_type":12,"marks":475,"text":476},"96cb4e0db7eb",[]," 3 saat çalışma, düşük ebeveyn katılımı, düşük motivasyon seviyesi.",[],{"_key":479,"_type":8,"children":480,"level":356,"listItem":357,"markDefs":488,"style":30},"4846bbe6f90a",[481,485],{"_key":482,"_type":12,"marks":483,"text":484},"8bd2acbcc930",[18],"1101:",{"_key":486,"_type":12,"marks":487,"text":476},"6f5012b5c72d",[],[],{"_key":490,"_type":8,"children":491,"markDefs":496,"style":120},"22be1f9effef",[492],{"_key":493,"_type":12,"marks":494,"text":495},"03e6c06e9d65",[],"Yorum:",[],{"_key":498,"_type":8,"children":499,"level":356,"listItem":357,"markDefs":504,"style":30},"390073ff733f",[500],{"_key":501,"_type":12,"marks":502,"text":503},"362335e1cae2",[],"Aykırı değer olarak tespit edilen bu öğrencilerin çalışma süreleri (özellikle 1 saat ve 3 saat olanlar) genellikle normal dağılım dışına çıkıyor.",[],{"_key":506,"_type":8,"children":507,"level":356,"listItem":357,"markDefs":528,"style":30},"ff4cf0b80eb1",[508,512,516,520,524],{"_key":509,"_type":12,"marks":510,"text":511},"727c9c4f8586",[],"Özellikle ",{"_key":513,"_type":12,"marks":514,"text":515},"71d7fff7a72a",[18],"262",{"_key":517,"_type":12,"marks":518,"text":519},"a03f20985c1f",[]," ve ",{"_key":521,"_type":12,"marks":522,"text":523},"416fb7c84d42",[18],"1101",{"_key":525,"_type":12,"marks":526,"text":527},"6ca7d2276e66",[]," numaralı veriler, düşük çalışma süreleriyle birlikte diğer parametrelerde de düşük motivasyon veya ebeveyn katılımı sergiliyor. Bu durum, bu öğrencilerin akademik başarılarını olumsuz etkileyebilir.",[],{"_key":530,"_type":8,"children":531,"markDefs":536,"style":55},"aecf32ece075",[532],{"_key":533,"_type":12,"marks":534,"text":535},"50f7b86879dc",[],"Genel Değerlendirme:",[],{"_key":538,"_type":8,"children":539,"markDefs":544,"style":30},"c79184bc525c",[540],{"_key":541,"_type":12,"marks":542,"text":543},"8c37954cfbee",[18],"Aykırı Değerler ve Dağılım:",[],{"_key":546,"_type":8,"children":547,"markDefs":552,"style":30},"c54c1638173c",[548],{"_key":549,"_type":12,"marks":550,"text":551},"771564579bb5",[18],"Hours_Studied:",[],{"_key":554,"_type":8,"children":555,"level":356,"listItem":357,"markDefs":560,"style":30},"9d496d54048f",[556],{"_key":557,"_type":12,"marks":558,"text":559},"da3b2ffb559b",[],"Aykırı değer olarak tespit edilen öğrencilerin çalışma süreleri geniş bir yelpazeye yayılıyor. Özellikle 1 ve 3 saat çalışma süreleri, geleneksel olarak başarılı olması beklenen bir öğrencinin çalışma süresinin çok altında.",[],{"_key":562,"_type":8,"children":563,"level":356,"listItem":357,"markDefs":577,"style":30},"0bb386e2a5fd",[564,567,570,573],{"_key":565,"_type":12,"marks":566,"text":515},"dbf7a3c110c6",[18],{"_key":568,"_type":12,"marks":569,"text":519},"3c783520a1c3",[],{"_key":571,"_type":12,"marks":572,"text":523},"edaeb8129f80",[18],{"_key":574,"_type":12,"marks":575,"text":576},"5399d3beb4ee",[]," numaralı veriler, düşük ebeveyn katılımı ve düşük motivasyon seviyeleriyle ilişkilendiriliyor. Bu durum, bu öğrencilerin akademik başarıları üzerinde olumsuz bir etki yaratıyor olabilir.",[],{"_key":579,"_type":8,"children":580,"level":356,"listItem":357,"markDefs":593,"style":30},"f717fd0103aa",[581,585,589],{"_key":582,"_type":12,"marks":583,"text":584},"604805d4311a",[],"Diğer yandan, ",{"_key":586,"_type":12,"marks":587,"text":588},"2fea94cf038a",[18],"209",{"_key":590,"_type":12,"marks":591,"text":592},"6da795de5529",[]," numaralı veri, yüksek çalışma süresi (43 saat) ve yüksek motivasyon ile güçlü bir başarı gösteriyor, ancak bu durumun genel bir eğilim olup olmadığını anlamak için daha fazla veri noktası gereklidir.",[],{"_key":595,"_type":8,"children":596,"markDefs":601,"style":30},"ada908459162",[597],{"_key":598,"_type":12,"marks":599,"text":600},"d82470d47e05",[18],"Exam_Score:",[],{"_key":603,"_type":8,"children":604,"level":356,"listItem":357,"markDefs":617,"style":30},"684cf507216a",[605,609,613],{"_key":606,"_type":12,"marks":607,"text":608},"8bca326692f1",[],"Aykırı değer olarak tespit edilenler arasında 100 puan alan ",{"_key":610,"_type":12,"marks":611,"text":612},"254473c9f731",[18],"94",{"_key":614,"_type":12,"marks":615,"text":616},"03488c70672d",[]," numaralı veri dikkat çekiyor. Bu, düşük çalışma saatlerine rağmen yüksek bir başarı göstermekte.",[],{"_key":619,"_type":8,"children":620,"level":356,"listItem":357,"markDefs":625,"style":30},"65d17a80497d",[621],{"_key":622,"_type":12,"marks":623,"text":624},"17951d9f8fdb",[],"Bu durum, motivasyon, ebeveyn desteği ve kaynaklara erişim gibi faktörlerin sınav başarısını nasıl etkilediğini göstermektedir.",[],{"_key":627,"_type":8,"children":628,"level":356,"listItem":357,"markDefs":637,"style":30},"20fdeda4590f",[629,633],{"_key":630,"_type":12,"marks":631,"text":632},"48fb35cf3ea8",[18],"217",{"_key":634,"_type":12,"marks":635,"text":636},"8a9137430022",[]," numaralı veri, 19 saat çalışma ile 89 puan almış. Bu, düşük çalışma saatlerinin yüksek puanlarla ilişkili olabileceğini, ancak yeterli motivasyon ve kaynakların varlığının kritik bir rol oynadığını göstermektedir.",[],{"_key":639,"_type":8,"children":640,"markDefs":645,"style":30},"cee2206ff838",[641],{"_key":642,"_type":12,"marks":643,"text":644},"6ab36e4b839c",[18],"2. İlişkilendirme Analizi:",[],{"_key":647,"_type":8,"children":648,"level":356,"listItem":357,"markDefs":671,"style":30},"d3612c8e1f78",[649,653,657,660,663,667],{"_key":650,"_type":12,"marks":651,"text":652},"a0dc9bcd3f6c",[18],"Ebeveyn Katılımı:",{"_key":654,"_type":12,"marks":655,"text":656},"3be38254ebbf",[]," Aykırı değerler arasında, ebeveyn katılımı düşük olan öğrencilerin (örneğin, ",{"_key":658,"_type":12,"marks":659,"text":515},"4da2870c2c90",[18],{"_key":661,"_type":12,"marks":662,"text":519},"11d2c1f8e980",[],{"_key":664,"_type":12,"marks":665,"text":666},"34aae296aff0",[18],"478",{"_key":668,"_type":12,"marks":669,"text":670},"1ce7948ce503",[],") düşük motivasyon ve akademik başarı gösterdiği görülüyor. Ebeveyn katılımı, öğrencinin eğitim başarısını önemli ölçüde etkileyebilir.",[],{"_key":673,"_type":8,"children":674,"level":356,"listItem":357,"markDefs":696,"style":30},"36f67e90922e",[675,679,683,686,689,692],{"_key":676,"_type":12,"marks":677,"text":678},"456546e1531d",[18],"Motivasyon Seviyesi:",{"_key":680,"_type":12,"marks":681,"text":682},"9ae313b6b2c7",[]," Yüksek motivasyon seviyesine sahip öğrenciler (örneğin, ",{"_key":684,"_type":12,"marks":685,"text":612},"56d2f862ca0d",[18],{"_key":687,"_type":12,"marks":688,"text":519},"1dde8f82e04c",[],{"_key":690,"_type":12,"marks":691,"text":588},"b073a4249709",[18],{"_key":693,"_type":12,"marks":694,"text":695},"338094f9e5dc",[],") genellikle daha iyi puanlar alıyor. Motivasyonun artırılması, düşük performans gösteren öğrenciler için bir çözüm olabilir.",[],{"_key":698,"_type":8,"children":699,"level":356,"listItem":357,"markDefs":724,"style":30},"6649a038491d",[700,704,708,712,716,720],{"_key":701,"_type":12,"marks":702,"text":703},"a330c58c6214",[18],"Okul Türü ve Öğretmen Kalitesi:",{"_key":705,"_type":12,"marks":706,"text":707},"866f9b5fbcc6",[]," Aykırı değerlerde genellikle ",{"_key":709,"_type":12,"marks":710,"text":711},"478c02feb571",[18],"Public",{"_key":713,"_type":12,"marks":714,"text":715},"9bcf1b1f5d03",[]," okul türü ve ",{"_key":717,"_type":12,"marks":718,"text":719},"3c4a334ac89d",[18],"Medium",{"_key":721,"_type":12,"marks":722,"text":723},"e1531f831e16",[]," öğretmen kalitesi ile ilişkilendirilmiş veriler var. Bu durum, okul ortamının ve öğretmen kalitesinin öğrenci başarısını nasıl etkilediğini gösteriyor.",[],{"_key":726,"_type":8,"children":727,"markDefs":732,"style":30},"9f6156a9e97d",[728],{"_key":729,"_type":12,"marks":730,"text":731},"21ef5d939fd9",[18],"3. Eğitim Stratejileri:",[],{"_key":734,"_type":8,"children":735,"level":356,"listItem":357,"markDefs":740,"style":30},"b790de6ad4a2",[736],{"_key":737,"_type":12,"marks":738,"text":739},"217252db5648",[],"Düşük çalışma süreleri ile düşük başarılar arasında bir ilişki olduğu gözlemleniyor. Eğitimciler, düşük süreli çalışan öğrenciler için çalışma sürelerini artırma konusunda stratejiler geliştirmeli.",[],{"_key":742,"_type":8,"children":743,"level":356,"listItem":357,"markDefs":748,"style":30},"66a2cf56161a",[744],{"_key":745,"_type":12,"marks":746,"text":747},"10e7764a7915",[],"Aile desteği ve ebeveyn katılımı artırılmalı. Ailelerin eğitime daha fazla dahil edilmesi, öğrencilerin motivasyonunu ve başarılarını artırabilir.",[],{"_key":750,"_type":8,"children":751,"level":356,"listItem":357,"markDefs":756,"style":30},"b91766b3531d",[752],{"_key":753,"_type":12,"marks":754,"text":755},"dcc12d966aa1",[],"Okul türü ve öğretmen kalitesi üzerine daha fazla analiz yapılarak, belirli okulların veya öğretmenlerin öğrenciler üzerindeki etkileri değerlendirilebilir. Özellikle düşük performans gösteren gruplar üzerinde daha fazla çalışılmalı.",[],{"_key":758,"_type":8,"children":759,"markDefs":764,"style":120},"8884cce16014",[760],{"_key":761,"_type":12,"marks":762,"text":763},"d96cbe559be9",[18],"Sonuç:",[],{"_key":766,"_type":8,"children":767,"level":356,"listItem":357,"markDefs":772,"style":30},"3a8ba052d7b1",[768],{"_key":769,"_type":12,"marks":770,"text":771},"14262a111fb5",[],"Aykırı değer analizi, öğrencilerin genel performansını etkileyen önemli faktörlerin belirlenmesine yardımcı olur. Elde edilen bulgular, eğitim sisteminin iyileştirilmesi için önemli veriler sunmaktadır. Bu tür verilerin düzenli analizi, eğitim politikalarının gözden geçirilmesi ve gerekli müdahalelerin yapılabilmesi için kritik öneme sahiptir. Eğitimciler ve yöneticiler, öğrenci başarısını artırmak için bu verileri kullanmalıdır.",[],{"_key":774,"_type":8,"children":775,"markDefs":780,"style":120},"380243d552bb",[776],{"_key":777,"_type":12,"marks":778,"text":779},"c7d195e8c8e3",[],"Z Skoru",[],{"_key":782,"_type":8,"children":783,"markDefs":788,"style":30},"2cbc827643c6",[784],{"_key":785,"_type":12,"marks":786,"text":787},"85a16ee9eaf2",[],"Bir veri setindeki bir verinin ortalamadan ne kadar uzakta olduğunu anlamamıza yardımcı olan bir istatistiksel ölçüttür. Başka bir deyişle, verinin ne kadar “standart sapma” uzağında olduğunu gösterir. Z skoru, veri noktasının ortalamanın altında mı yoksa üstünde mi olduğunu ve ne kadar uzak olduğunu belirlememizi sağlar.",[],{"_key":790,"_type":8,"children":791,"markDefs":795,"style":30},"99b8fd4f72c1",[792],{"_key":793,"_type":12,"marks":794,"text":158},"a97ca8c8abd8",[],[],{"_key":797,"_type":8,"children":798,"markDefs":803,"style":30},"d6b3109ffeb3",[799],{"_key":800,"_type":12,"marks":801,"text":802},"1fd693f21910",[],"Eğer Z skoru 2 veya daha büyükse, bu veri noktası ortalamadan 2 standart sapma uzaklıkta demektir. Genellikle Z skoru yüksek olan veriler “aykırı değer” olarak kabul edilir, çünkü bu veriler genelde setin geneli ile uyumsuzluk gösterir.",[],{"_key":805,"_type":8,"children":806,"markDefs":811,"style":30},"08cc98e839e9",[807],{"_key":808,"_type":12,"marks":809,"text":810},"7b99f7fb88e5",[],"Z skoru analizi aykırı değerlerin tespitinde sıkça kullanılır çünkü bu yöntem, verilerin normal dağılım gösterip göstermediğine bakmaksızın uygulanabilir.",[],{"_key":813,"_type":8,"children":814,"markDefs":818,"style":30},"ce03cbe00faa",[815],{"_key":816,"_type":12,"marks":817,"text":158},"d8b97e4e72aa",[],[],{"_key":820,"_type":140,"code":821,"language":142},"c4c3bc98b1b6","# Z-skoru hesaplama fonksiyonu\ndef z_score_outliers(data, column, threshold=3):\n    \n    # Z-skorunu hesapla: (Veri - Ortalama) / Standart Sapma\n    z_scores = (data[column] - data[column].mean()) / data[column].std()\n    \n    # Aykırı değerleri tespit et: Z-skoru mutlak değeri eşik değerinden büyük olanları seç\n    outliers = data[np.abs(z_scores) > threshold]\n    \n    return outliers  # Aykırı değerleri içeren DataFrame'i döndür\n\n# Hours_Studied için aykırı değerleri bul\nhours_outliers = z_score_outliers(data, 'Hours_Studied')  # 'Hours_Studied' sütunu için aykırı değerleri bul\nprint(\"Z Skoru ile Hours_Studied Aykırı Değerler:\")  # Aykırı değerlerin başlığı\nprint(hours_outliers)  # Aykırı değerleri ekrana yazdır\n\n# Exam_Score için aykırı değerleri bul\nexam_outliers = z_score_outliers(data, 'Exam_Score')  # 'Exam_Score' sütunu için aykırı değerleri bul\nprint(\"Z Skoru ile Exam_Score Aykırı Değerler:\")  # Aykırı değerlerin başlığı\nprint(exam_outliers)  # Aykırı değerleri ekrana yazdır",{"_key":823,"_type":8,"children":824,"markDefs":828,"style":151},"363591378ced",[825],{"_key":147,"_type":12,"marks":826,"text":827},[],"Aşağıdaki gibi bir çıktı gelecektir (Çıktı biraz uzun)",[],{"_key":830,"_type":8,"children":831,"markDefs":835,"style":30},"6c115db72e6d",[832],{"_key":833,"_type":12,"marks":834,"text":158},"31b173588784",[],[],{"_key":837,"_type":140,"code":838},"ed686b8f4ef9","Z Skoru ile Hours_Studied Aykırı Değerler:\n      Hours_Studied  Attendance Parental_Involvement Access_to_Resources  \\\n209              43          86                 High              Medium   \n262               1          69                 High              Medium   \n478              38          86                  Low                High   \n1591              2          84                  Low                High   \n1615             39          95               Medium                High   \n1957             39          97                 High                High   \n1971              2          96                  Low                High   \n2024              2          98                  Low                High   \n2305             39          92               Medium              Medium   \n2506             38          63               Medium                High   \n2521             38          86                 High              Medium   \n2895             44          68                 High                 Low   \n2947              2          67               Medium              Medium   \n3454              2          99               Medium                 Low   \n3716             39          90                 High                High   \n3982             39          75               Medium                High   \n4198              2          98                 High              Medium   \n4725              1          81               Medium              Medium   \n4779              1          88               Medium                High   \n4870             38          90                 High              Medium   \n4997             39          67                 High                High   \n5157             38          82               Medium                 Low   \n5224             38          80                 High              Medium   \n5796             39          78               Medium              Medium   \n5846             38          98                  Low              Medium   \n\n     Extracurricular_Activities  Sleep_Hours  Previous_Scores  \\\n209                         Yes            7               97   \n262                         Yes            6               97   \n478                         Yes            7               79   \n1591                         No            8               54   \n1615                        Yes            9               54   \n1957                        Yes           10               91   \n1971                        Yes            9               77   \n2024                        Yes            7               80   \n2305                         No            9               73   \n2506                         No            8               52   \n2521                         No            6               88   \n2895                         No            9               75   \n2947                         No            6               73   \n3454                        Yes            9               52   \n3716                         No            8               92   \n3982                        Yes            6               82   \n4198                         No            4               64   \n4725                        Yes            8               66   \n4779                        Yes            4               72   \n4870                        Yes            4               60   \n4997                        Yes            5               76   \n5157                         No            6               97   \n5224                         No            5               78   \n5796                         No            6               73   \n5846                         No            6               94   \n\n     Motivation_Level Internet_Access  Tutoring_Sessions Family_Income  \\\n209            Medium             Yes                  2        Medium   \n262            Medium             Yes                  1           Low   \n478               Low             Yes                  3           Low   \n1591              Low             Yes                  3           Low   \n1615             High             Yes                  2        Medium   \n1957           Medium             Yes                  2           Low   \n1971           Medium             Yes                  3        Medium   \n2024             High             Yes                  2           Low   \n2305           Medium             Yes                  1        Medium   \n2506             High             Yes                  1        Medium   \n2521             High             Yes                  1           Low   \n2895              Low             Yes                  3        Medium   \n2947              Low             Yes                  1           Low   \n3454              Low             Yes                  0        Medium   \n3716             High             Yes                  2        Medium   \n3982             High             Yes                  1          High   \n4198           Medium             Yes                  1           Low   \n4725           Medium             Yes                  1           Low   \n4779             High             Yes                  3        Medium   \n4870              Low             Yes                  2           Low   \n4997           Medium              No                  2        Medium   \n5157              Low             Yes                  2           Low   \n5224           Medium             Yes                  1           Low   \n5796           Medium             Yes                  0           Low   \n5846           Medium             Yes                  2           Low   \n\n     Teacher_Quality School_Type Peer_Influence  Physical_Activity  \\\n209             High      Public       Positive                  1   \n262           Medium      Public       Positive                  3   \n478           Medium      Public       Negative                  3   \n1591             Low      Public       Positive                  4   \n1615          Medium     Private       Positive                  3   \n1957          Medium      Public       Positive                  3   \n1971             NaN      Public        Neutral                  2   \n2024            High      Public        Neutral                  1   \n2305          Medium      Public       Negative                  4   \n2506          Medium     Private       Positive                  3   \n2521            High      Public       Negative                  4   \n2895            High     Private       Negative                  2   \n2947          Medium     Private       Positive                  2   \n3454          Medium      Public        Neutral                  4   \n3716            High     Private        Neutral                  1   \n3982             Low      Public       Negative                  3   \n4198            High     Private        Neutral                  2   \n4725          Medium      Public       Negative                  2   \n4779          Medium     Private       Negative                  2   \n4870          Medium      Public        Neutral                  4   \n4997          Medium     Private       Negative                  4   \n5157          Medium     Private       Negative                  3   \n5224          Medium      Public       Positive                  4   \n5796          Medium      Public       Positive                  2   \n5846             Low      Public       Negative                  4   \n\n     Learning_Disabilities Parental_Education_Level Distance_from_Home  \\\n209                     No              High School               Near   \n262                     No              High School               Near   \n478                     No              High School               Near   \n1591                    No                      NaN               Near   \n1615                    No              High School           Moderate   \n1957                    No              High School           Moderate   \n1971                    No              High School                Far   \n2024                    No              High School               Near   \n2305                    No             Postgraduate           Moderate   \n2506                    No                  College           Moderate   \n2521                    No              High School           Moderate   \n2895                    No              High School           Moderate   \n2947                    No                  College           Moderate   \n3454                    No              High School               Near   \n3716                    No              High School               Near   \n3982                    No                  College               Near   \n4198                    No              High School               Near   \n4725                    No                  College               Near   \n4779                    No                  College               Near   \n4870                    No                  College           Moderate   \n4997                    No                      NaN               Near   \n5157                    No                  College               Near   \n5224                    No                  College                Far   \n5796                    No                  College                Far   \n5846                    No             Postgraduate               Near   \n\n      Gender  Exam_Score  \n209   Female          78  \n262   Female          61  \n478     Male          73  \n1591    Male          62  \n1615    Male          77  \n1957  Female          79  \n1971  Female          65  \n2024    Male          66  \n2305    Male          75  \n2506    Male          69  \n2521  Female          74  \n2895  Female          71  \n2947    Male          58  \n3454    Male          62  \n3716  Female          78  \n3982    Male          73  \n4198  Female          65  \n4725    Male          60  \n4779    Male          92  \n4870    Male          74  \n4997  Female          71  \n5157    Male          72  \n5224  Female          72  \n5796    Male          70  \n5846  Female          75  \nZ Skoru ile Exam_Score Aykırı Değerler:\n      Hours_Studied  Attendance Parental_Involvement Access_to_Resources  \\\n94               18          89                 High              Medium   \n113              35          99                 High                High   \n217              19          70               Medium                 Low   \n404              17          77                  Low                High   \n529              15          83               Medium              Medium   \n558              22          70                  Low              Medium   \n560              22          71                  Low                High   \n637              20          65               Medium                 Low   \n770              24          96                  Low                High   \n836              29          76               Medium              Medium   \n919              21          74                 High              Medium   \n1099             22          75               Medium                 Low   \n1101              3          62               Medium                 Low   \n1107             14          77                  Low                High   \n1109             31          69               Medium              Medium   \n1351              9          61                 High              Medium   \n1525             27          98                  Low              Medium   \n1607             30          98               Medium                 Low   \n1844             21          92                 High                High   \n1863             10          76               Medium                 Low   \n1957             39          97                 High                High   \n2076             24          77                 High              Medium   \n2292             21          70                 High                High   \n2421             27          90                  Low              Medium   \n2425             23          83                 High                High   \n2513             18          86                 High              Medium   \n2595              7          69               Medium                High   \n2687             11          71                  Low              Medium   \n2904             11          62                 High              Medium   \n2954             14          75               Medium              Medium   \n3124             19          90               Medium                High   \n3141              7          63                 High                High   \n3364             16          76               Medium                High   \n3457             18          93               Medium              Medium   \n3579             14          90                 High                High   \n3924             18          87                  Low                 Low   \n3932             25          66                 High              Medium   \n4192             28          90                  Low              Medium   \n4254             21          74                 High                 Low   \n4297             21          67               Medium              Medium   \n4355             24          70               Medium                High   \n4405             25          98               Medium              Medium   \n4531             26          69                 High                High   \n4583             25          73               Medium              Medium   \n4666             16          71                  Low                 Low   \n4779              1          88               Medium                High   \n5125             16          82               Medium              Medium   \n5966             25          99               Medium              Medium   \n5989             18          61               Medium                 Low   \n6347             28          96                 High                 Low   \n6393             16          83                  Low              Medium   \n6522             18          90                 High                High   \n\n     Extracurricular_Activities  Sleep_Hours  Previous_Scores  \\\n94                          Yes            4               73   \n113                         Yes            7               85   \n217                          No            7               54   \n404                         Yes            5               53   \n529                          No            7               97   \n558                          No            7               53   \n560                         Yes            9               56   \n637                         Yes            7               62   \n770                          No            6               93   \n836                          No            8               96   \n919                          No            6               94   \n1099                        Yes            5               66   \n1101                         No            6               67   \n1107                         No            6               75   \n1109                         No            7               52   \n1351                        Yes            6               77   \n1525                        Yes            6               93   \n1607                        Yes            9               93   \n1844                        Yes            9               58   \n1863                         No            6               76   \n1957                        Yes           10               91   \n2076                        Yes            7               57   \n2292                         No            9               66   \n2421                         No            9               52   \n2425                        Yes            4               89   \n2513                         No            8               60   \n2595                        Yes            8               54   \n2687                        Yes            8               55   \n2904                        Yes            7               76   \n2954                        Yes            5               95   \n3124                        Yes            5               90   \n3141                        Yes           10               90   \n3364                        Yes            6               63   \n3457                         No            7               76   \n3579                        Yes            8               86   \n3924                         No            8               79   \n3932                        Yes            7               55   \n4192                        Yes            9               91   \n4254                        Yes            8               64   \n4297                        Yes            6               88   \n4355                        Yes            9               52   \n4405                        Yes            7               90   \n4531                         No            7               95   \n4583                        Yes            7               56   \n4666                        Yes            6               59   \n4779                        Yes            4               72   \n5125                         No            7               56   \n5966                        Yes            7               77   \n5989                        Yes            6               91   \n6347                        Yes            4               98   \n6393                        Yes            8               92   \n6522                        Yes            6               54   \n\n     Motivation_Level Internet_Access  Tutoring_Sessions Family_Income  \\\n94             Medium             Yes                  3          High   \n113               Low             Yes                  2        Medium   \n217              High             Yes                  0        Medium   \n404            Medium             Yes                  2          High   \n529            Medium             Yes                  2           Low   \n558               Low             Yes                  1           Low   \n560              High             Yes                  1           Low   \n637              High             Yes                  0        Medium   \n770            Medium             Yes                  2           Low   \n836               Low             Yes                  2           Low   \n919            Medium             Yes                  1           Low   \n1099              Low             Yes                  2           Low   \n1101           Medium             Yes                  1           Low   \n1107           Medium             Yes                  1        Medium   \n1109           Medium              No                  2          High   \n1351              Low              No                  1          High   \n1525              Low              No                  5          High   \n1607           Medium             Yes                  1           Low   \n1844           Medium             Yes                  2          High   \n1863           Medium             Yes                  1          High   \n1957           Medium             Yes                  2           Low   \n2076           Medium             Yes                  3        Medium   \n2292           Medium             Yes                  1        Medium   \n2421              Low              No                  2           Low   \n2425              Low             Yes                  1        Medium   \n2513           Medium             Yes                  2           Low   \n2595             High             Yes                  1        Medium   \n2687           Medium             Yes                  1           Low   \n2904             High             Yes                  3          High   \n2954           Medium             Yes                  0        Medium   \n3124              Low             Yes                  0           Low   \n3141           Medium             Yes                  0           Low   \n3364             High             Yes                  0           Low   \n3457              Low             Yes                  2        Medium   \n3579           Medium             Yes                  4        Medium   \n3924             High             Yes                  1           Low   \n3932           Medium             Yes                  4        Medium   \n4192           Medium             Yes                  0        Medium   \n4254           Medium             Yes                  3           Low   \n4297           Medium             Yes                  1           Low   \n4355             High             Yes                  1           Low   \n4405             High             Yes                  1          High   \n4531              Low              No                  0        Medium   \n4583           Medium             Yes                  2          High   \n4666             High             Yes                  1           Low   \n4779             High             Yes                  3        Medium   \n5125              Low             Yes                  0          High   \n5966           Medium             Yes                  0          High   \n5989             High             Yes                  3        Medium   \n6347             High             Yes                  1          High   \n6393              Low             Yes                  2          High   \n6522              Low             Yes                  1        Medium   \n\n     Teacher_Quality School_Type Peer_Influence  Physical_Activity  \\\n94            Medium     Private       Positive                  2   \n113             High     Private        Neutral                  2   \n217           Medium      Public       Positive                  2   \n404           Medium      Public        Neutral                  3   \n529             High     Private        Neutral                  2   \n558           Medium      Public       Positive                  3   \n560             High      Public        Neutral                  3   \n637           Medium      Public        Neutral                  0   \n770           Medium      Public        Neutral                  2   \n836           Medium      Public       Positive                  2   \n919             High      Public       Positive                  1   \n1099          Medium      Public       Positive                  2   \n1101          Medium      Public       Negative                  3   \n1107            High      Public        Neutral                  4   \n1109             Low      Public        Neutral                  5   \n1351          Medium     Private        Neutral                  2   \n1525            High      Public       Positive                  3   \n1607             Low     Private       Positive                  3   \n1844          Medium      Public        Neutral                  5   \n1863            High      Public       Negative                  2   \n1957          Medium      Public       Positive                  3   \n2076            High      Public       Positive                  2   \n2292             Low      Public        Neutral                  4   \n2421            High      Public       Positive                  2   \n2425          Medium      Public       Negative                  3   \n2513            High     Private        Neutral                  1   \n2595            High      Public       Positive                  2   \n2687          Medium      Public       Negative                  3   \n2904          Medium     Private        Neutral                  3   \n2954          Medium      Public       Positive                  3   \n3124          Medium      Public        Neutral                  2   \n3141          Medium     Private       Positive                  2   \n3364          Medium      Public       Positive                  1   \n3457          Medium     Private        Neutral                  4   \n3579          Medium     Private       Negative                  2   \n3924            High      Public       Negative                  4   \n3932          Medium      Public        Neutral                  2   \n4192          Medium      Public       Positive                  2   \n4254             Low      Public        Neutral                  1   \n4297          Medium     Private       Positive                  5   \n4355          Medium      Public       Positive                  2   \n4405             Low      Public        Neutral                  4   \n4531          Medium      Public       Negative                  3   \n4583          Medium      Public        Neutral                  4   \n4666            High      Public       Positive                  3   \n4779          Medium     Private       Negative                  2   \n5125            High     Private       Negative                  1   \n5966            High      Public        Neutral                  3   \n5989            High      Public       Positive                  3   \n6347            High      Public       Positive                  3   \n6393            High      Public       Positive                  4   \n6522            High      Public       Negative                  3   \n\n     Learning_Disabilities Parental_Education_Level Distance_from_Home  \\\n94                      No                  College               Near   \n113                     No             Postgraduate               Near   \n217                    Yes              High School           Moderate   \n404                     No                  College               Near   \n529                     No              High School               Near   \n558                     No              High School               Near   \n560                    Yes                  College               Near   \n637                    Yes             Postgraduate               Near   \n770                     No              High School           Moderate   \n836                     No             Postgraduate           Moderate   \n919                     No              High School               Near   \n1099                    No              High School                Far   \n1101                    No              High School               Near   \n1107                   Yes              High School               Near   \n1109                    No                  College                Far   \n1351                    No              High School               Near   \n1525                    No              High School           Moderate   \n1607                    No              High School               Near   \n1844                    No              High School           Moderate   \n1863                    No             Postgraduate               Near   \n1957                    No              High School           Moderate   \n2076                    No                  College                Far   \n2292                    No                  College           Moderate   \n2421                   Yes                  College               Near   \n2425                    No              High School                Far   \n2513                    No                  College               Near   \n2595                    No              High School                Far   \n2687                    No                  College               Near   \n2904                   Yes              High School           Moderate   \n2954                    No                  College           Moderate   \n3124                    No                  College                Far   \n3141                   Yes              High School           Moderate   \n3364                    No              High School               Near   \n3457                    No              High School               Near   \n3579                    No              High School               Near   \n3924                    No                  College               Near   \n3932                   Yes              High School           Moderate   \n4192                    No                  College           Moderate   \n4254                    No                  College                Far   \n4297                    No             Postgraduate               Near   \n4355                    No             Postgraduate           Moderate   \n4405                    No             Postgraduate               Near   \n4531                    No             Postgraduate               Near   \n4583                    No              High School               Near   \n4666                    No             Postgraduate               Near   \n4779                    No                  College               Near   \n5125                   Yes              High School                Far   \n5966                    No              High School               Near   \n5989                    No                  College           Moderate   \n6347                    No              High School               Near   \n6393                    No             Postgraduate               Near   \n6522                    No              High School               Near   \n\n      Gender  Exam_Score  \n94    Female         100  \n113   Female          79  \n217     Male          89  \n404     Male          86  \n529   Female          97  \n558   Female          83  \n560   Female          84  \n637     Male          80  \n770   Female          94  \n836     Male          94  \n919     Male          97  \n1099    Male          80  \n1101    Male          55  \n1107  Female          89  \n1109    Male          92  \n1351    Male          82  \n1525  Female         101  \n1607    Male          88  \n1844  Female          89  \n1863    Male          80  \n1957  Female          79  \n2076    Male          84  \n2292    Male          91  \n2421    Male          86  \n2425    Male          99  \n2513    Male          88  \n2595    Male          87  \n2687  Female          87  \n2904    Male          88  \n2954    Male          82  \n3124  Female          94  \n3141    Male          86  \n3364  Female          86  \n3457  Female          96  \n3579  Female          99  \n3924    Male          82  \n3932  Female          84  \n4192  Female          98  \n4254    Male          80  \n4297  Female          95  \n4355    Male          85  \n4405    Male          94  \n4531  Female          93  \n4583  Female          93  \n4666    Male          82  \n4779    Male          92  \n5125  Female          79  \n5966    Male          97  \n5989  Female          80  \n6347    Male          98  \n6393  Female          98  \n6522  Female          95  ",{"_key":840,"_type":8,"children":841,"markDefs":850,"style":120},"746177e5caf4",[842,846],{"_key":843,"_type":12,"marks":844,"text":845},"1209b5c2b0d7",[18],"Öğrenme Engelleri",{"_key":847,"_type":12,"marks":848,"text":849},"455259d0b789",[],":",[],{"_key":852,"_type":8,"children":853,"level":356,"listItem":357,"markDefs":887,"style":30},"0cce276da7fa",[854,858,861,865,869,872,876,880,883],{"_key":855,"_type":12,"marks":856,"text":857},"e4357467306a",[],"Öğrenme engeli olan öğrenciler (örn. ",{"_key":859,"_type":12,"marks":860,"text":632},"08d427e7c839",[18],{"_key":862,"_type":12,"marks":863,"text":864},"a76eadd8ece5",[],", ",{"_key":866,"_type":12,"marks":867,"text":868},"c258726630c8",[18],"560",{"_key":870,"_type":12,"marks":871,"text":864},"3fda4f5a3bbd",[],{"_key":873,"_type":12,"marks":874,"text":875},"f951bdac8b40",[18],"2904",{"_key":877,"_type":12,"marks":878,"text":879},"d279d69c1c26",[],") arasında farklı başarı seviyeleri gözlemleniyor. ",{"_key":881,"_type":12,"marks":882,"text":632},"dda28edfe1d8",[18],{"_key":884,"_type":12,"marks":885,"text":886},"bfc9303736b1",[]," numaralı öğrenci, öğrenme engeli olmasına rağmen 89 puan alırken, diğer bazı öğrenciler daha düşük puanlar elde ediyor. Bu, öğrenme engelinin etkilerinin bireysel farklılıklara göre değişebileceğini gösteriyor.",[],{"_key":889,"_type":8,"children":890,"markDefs":898,"style":120},"a91edf821127",[891,895],{"_key":892,"_type":12,"marks":893,"text":894},"64df03c5db73",[18],"Ebeveyn Eğitim Düzeyi",{"_key":896,"_type":12,"marks":897,"text":849},"53d40d7d3e16",[],[],{"_key":900,"_type":8,"children":901,"level":356,"listItem":357,"markDefs":929,"style":30},"b8f30c2f8756",[902,906,910,914,918,921,925],{"_key":903,"_type":12,"marks":904,"text":905},"b9ffd837e268",[],"Öğrencilerin ebeveyn eğitim düzeyinin başarı ile ilişkisi önemli bir faktör. ",{"_key":907,"_type":12,"marks":908,"text":909},"d1cec93de7a1",[18],"Postgraduate",{"_key":911,"_type":12,"marks":912,"text":913},"3501d37ae80f",[]," olan ebeveynlere sahip öğrenciler (örn. ",{"_key":915,"_type":12,"marks":916,"text":917},"28afd8c9653d",[18],"113",{"_key":919,"_type":12,"marks":920,"text":864},"860031ec4f41",[],{"_key":922,"_type":12,"marks":923,"text":924},"e4305e552380",[18],"637",{"_key":926,"_type":12,"marks":927,"text":928},"42ac0d7bc07e",[],") genellikle daha yüksek puanlar almış. Bu, aile eğitiminin, öğrencinin akademik başarısı üzerindeki etkisini vurguluyor.",[],{"_key":931,"_type":8,"children":932,"markDefs":940,"style":120},"1690c188b9de",[933,937],{"_key":934,"_type":12,"marks":935,"text":936},"13cf9dbfaf17",[18],"Evden Uzaklık",{"_key":938,"_type":12,"marks":939,"text":849},"ec27f75b775b",[],[],{"_key":942,"_type":8,"children":943,"level":356,"listItem":357,"markDefs":971,"style":30},"cfe9ad86699e",[944,948,952,956,960,964,967],{"_key":945,"_type":12,"marks":946,"text":947},"5e009c395b96",[],"Uzaklık durumunun (Near, Moderate, Far) başarı üzerindeki etkisi de dikkat çekici. ",{"_key":949,"_type":12,"marks":950,"text":951},"1f84f458e1b7",[18],"Far",{"_key":953,"_type":12,"marks":954,"text":955},"30c79cad53d7",[]," mesafede yaşayan öğrenciler arasında başarı düzeyi genellikle daha düşük. Örneğin, ",{"_key":957,"_type":12,"marks":958,"text":959},"20366eaf6c07",[18],"1099",{"_key":961,"_type":12,"marks":962,"text":963},"13da479b04f4",[]," numaralı öğrenci ",{"_key":965,"_type":12,"marks":966,"text":951},"17208feb3a85",[18],{"_key":968,"_type":12,"marks":969,"text":970},"a6f905913869",[]," mesafede olmasına rağmen 80 puan alıyor. Ulaşım zorlukları ve evden uzakta olmanın motivasyon üzerindeki etkisi göz önünde bulundurulmalı.",[],{"_key":973,"_type":8,"children":974,"markDefs":982,"style":120},"a60fe73f526f",[975,979],{"_key":976,"_type":12,"marks":977,"text":978},"bc38c741c7aa",[18],"Cinsiyet",{"_key":980,"_type":12,"marks":981,"text":849},"b3e1f8d2ff3e",[],[],{"_key":984,"_type":8,"children":985,"level":356,"listItem":357,"markDefs":1012,"style":30},"ad6b1b8c3160",[986,990,994,998,1001,1004,1008],{"_key":987,"_type":12,"marks":988,"text":989},"619fb84bdac5",[],"Cinsiyet dağılımı da başarıda belirleyici olabilir. Her iki cinsiyetin de yüksek başarı gösterdiği öğrenciler bulunmakta, ancak bazı cinsiyet gruplarının belirli alanlarda daha önde olduğu görülebilir. Örneğin, ",{"_key":991,"_type":12,"marks":992,"text":993},"0c11deb540ac",[18],"Female",{"_key":995,"_type":12,"marks":996,"text":997},"4f4059a6943c",[]," öğrencilerin bazıları (örn. ",{"_key":999,"_type":12,"marks":1000,"text":612},"114f1f90366c",[18],{"_key":1002,"_type":12,"marks":1003,"text":519},"c197d074c168",[],{"_key":1005,"_type":12,"marks":1006,"text":1007},"e6c6e1f55674",[18],"1525",{"_key":1009,"_type":12,"marks":1010,"text":1011},"f42aa7e23cf6",[],") 100 ve üzeri puanlar alarak dikkat çekiyor.",[],{"_key":1014,"_type":8,"children":1015,"markDefs":1023,"style":120},"bb418b566bfb",[1016,1020],{"_key":1017,"_type":12,"marks":1018,"text":1019},"00a90f67dd40",[18],"Sonuç",{"_key":1021,"_type":12,"marks":1022,"text":849},"7c3495029194",[],[],{"_key":1025,"_type":8,"children":1026,"level":356,"listItem":357,"markDefs":1031,"style":30},"22a1f5310a44",[1027],{"_key":1028,"_type":12,"marks":1029,"text":1030},"4c552466190f",[],"Z-skoru ile tespit edilen aykırı değerler, öğrenme engeli, ebeveyn eğitim durumu, ev mesafesi ve cinsiyet gibi değişkenlerin öğrencilerin akademik başarıları üzerindeki etkilerini göstermektedir. Eğitim politikalarının, öğrenme engeli olan öğrencileri desteklemek, ebeveyn eğitimini teşvik etmek ve ulaşım sorunlarını azaltmak için stratejiler geliştirmesi gerekmektedir. Aşağıda daha detaylı yorumları bulabiliriz",[],{"_key":1033,"_type":8,"children":1034,"markDefs":1039,"style":120},"62503b20addc",[1035],{"_key":1036,"_type":12,"marks":1037,"text":1038},"6f591c4a77df",[],"Z-skoru ile Aykırı Değer Analizi:",[],{"_key":1041,"_type":8,"children":1042,"level":356,"listItem":357,"markDefs":1051,"style":30},"f3a00e4fc29d",[1043,1047],{"_key":1044,"_type":12,"marks":1045,"text":1046},"978f27b66fb3",[18],"Z-skoru Değerleri",{"_key":1048,"_type":12,"marks":1049,"text":1050},"afa563dc896b",[],": Z-skoru hesaplandığında, genellikle ±2 veya ±3'ten büyük olan değerler aykırı değer olarak kabul edilir. Bu durumda, z-skoru 2'den büyük olan öğrenci başarıları dikkate alınarak, bu öğrencilerin özellikleri incelenebilir.",[],{"_key":1053,"_type":8,"children":1054,"markDefs":1059,"style":120},"cbc3b8da8768",[1055],{"_key":1056,"_type":12,"marks":1057,"text":1058},"f7274e87e0c8",[],"2. Akademik Başarı ve Z-skorları:",[],{"_key":1061,"_type":8,"children":1062,"level":356,"listItem":357,"markDefs":1071,"style":30},"eb960925997b",[1063,1067],{"_key":1064,"_type":12,"marks":1065,"text":1066},"f13f76c46770",[18],"Exam_Score (Sınav Puanı)",{"_key":1068,"_type":12,"marks":1069,"text":1070},"2f815181997d",[],": Z-skoru analizi, öğrencilerin sınav puanlarının ne kadar standart sapma ile ortalamadan uzaklaştığını gösterir. Örneğin, z-skoru +2 olan bir öğrenci, sınavda beklenenin çok üzerinde bir performans sergilemiştir. Bu tür öğrencilerin çalışma alışkanlıkları, fiziksel aktivite düzeyleri ve diğer değişkenleri göz önünde bulundurularak daha ayrıntılı analiz yapılabilir.",[],{"_key":1073,"_type":8,"children":1074,"markDefs":1079,"style":120},"14ced453c42c",[1075],{"_key":1076,"_type":12,"marks":1077,"text":1078},"c7100f214caa",[],"3. Uyku ve Çalışma Süreleri:",[],{"_key":1081,"_type":8,"children":1082,"level":356,"listItem":357,"markDefs":1091,"style":30},"3ff91cc8dc2c",[1083,1087],{"_key":1084,"_type":12,"marks":1085,"text":1086},"49a4c4ce63c1",[18],"Sleep_Hours ve Hours_Studied",{"_key":1088,"_type":12,"marks":1089,"text":1090},"d92fcb016b4c",[],": Z-skorları, bu iki değişkenin ortalama değerlerinin dışında kalan öğrenci gruplarını belirlemede yardımcı olur. Örneğin, az uyuyarak yüksek z-skoru alan öğrenciler (yani başarılı olanlar), uyku eksikliğine rağmen iyi performans gösteriyor olabilirler. Bu, kişisel motivasyon veya etkin çalışma yöntemlerinin varlığına işaret edebilir.",[],{"_key":1093,"_type":8,"children":1094,"markDefs":1099,"style":120},"06992a25d9d4",[1095],{"_key":1096,"_type":12,"marks":1097,"text":1098},"9736c77c56dc",[],"4. Ebeveyn Eğitimi ve Sosyal Destek:",[],{"_key":1101,"_type":8,"children":1102,"level":356,"listItem":357,"markDefs":1111,"style":30},"70f7b17cf36a",[1103,1107],{"_key":1104,"_type":12,"marks":1105,"text":1106},"ea6778039180",[18],"Parental_Education_Level ve Aykırı Değerler",{"_key":1108,"_type":12,"marks":1109,"text":1110},"20de12d56682",[],": Ebeveyn eğitimi düzeyi yüksek olan öğrenciler, z-skorlarına göre ortalamanın çok üzerinde puanlar alabilirler. Ebeveyn desteği ile birlikte, sosyal çevrenin (peer influence) de z-skorları açısından olumlu bir etkiye sahip olduğu gözlemlenebilir. Bu durum, öğrenci başarısının sosyal ve ailevi destekle nasıl şekillendiğini gösterir.",[],{"_key":1113,"_type":8,"children":1114,"markDefs":1119,"style":120},"81bc2f739fe7",[1115],{"_key":1116,"_type":12,"marks":1117,"text":1118},"170600643ed2",[],"5. Cinsiyet ve Z-skoru:",[],{"_key":1121,"_type":8,"children":1122,"level":356,"listItem":357,"markDefs":1127,"style":30},"825dc9428f3e",[1123],{"_key":1124,"_type":12,"marks":1125,"text":1126},"691248a385b3",[],"Cinsiyetin z-skoru analiziyle birlikte incelenmesi, erkek ve kadın öğrenciler arasındaki performans farklılıklarını daha net bir şekilde ortaya koyabilir. Cinsiyetler arasında belirgin z-skoru farklılıkları varsa, bu durum eğitici stratejilerin ve destek programlarının nasıl tasarlanması gerektiği konusunda bilgi sağlayabilir.",[],{"_key":1129,"_type":8,"children":1130,"markDefs":1135,"style":120},"18e5f601a7b3",[1131],{"_key":1132,"_type":12,"marks":1133,"text":1134},"89c5fb7ad476",[],"6. Fiziksel Aktivite ve Motivasyon Düzeyi:",[],{"_key":1137,"_type":8,"children":1138,"level":356,"listItem":357,"markDefs":1147,"style":30},"7c538923b27b",[1139,1143],{"_key":1140,"_type":12,"marks":1141,"text":1142},"74af8cbd168a",[18],"Physical_Activity ve Motivation_Level",{"_key":1144,"_type":12,"marks":1145,"text":1146},"0d4751738437",[],": Z-skorları, bu iki faktörün öğrenci performansındaki rolünü daha iyi anlamamıza yardımcı olabilir. Yüksek z-skoru ile iyi bir fiziksel aktivite düzeyine sahip öğrencilerin, motivasyon düzeyleri incelenerek başarılarındaki etkenler belirlenebilir.",[],{"_key":1149,"_type":8,"children":1150,"markDefs":1155,"style":316},"ba788ff5aad0",[1151],{"_key":1152,"_type":12,"marks":1153,"text":1154},"2b7dbb3e4918",[],"Genel Değerlendirme",[],{"_key":1157,"_type":8,"children":1158,"markDefs":1163,"style":30},"874c761b08d8",[1159],{"_key":1160,"_type":12,"marks":1161,"text":1162},"fb4351e4fd7f",[],"Z-skoru analizi, verilerin normal dağılımı hakkında bilgi edinmek ve aykırı değerleri tanımlamak için güçlü bir yöntemdir. Elde edilen Z-skorları, her bir gözlemin ortalamadan ne kadar uzak olduğunu standardize bir ölçü ile ifade eder. Genelde, Z-skoru 3'ten büyük olan değerler aykırı kabul edilirken, -3'ten küçük olanlar da dikkate alınabilir.",[],{"_key":1165,"_type":8,"children":1166,"markDefs":1171,"style":30},"b78b853b7f1a",[1167],{"_key":1168,"_type":12,"marks":1169,"text":1170},"edca5748d114",[],"Veri setimizde elde edilen Z-skorları üzerinden yapılan analizlerde, belirli gözlemler belirgin şekilde ortalamadan uzaklaşmaktadır. Bu durum, gözlemlerin performansı ve öğrenim düzeyleri hakkında önemli ipuçları sağlamaktadır. Örneğin, 100 puan alan bir öğrencinin Z-skoru 2.62 olarak hesaplanmış, bu durum onun genel öğrenci grubundan oldukça başarılı olduğunu göstermektedir. Diğer taraftan, düşük Z-skorlarına sahip öğrenciler, özellikle 1 ve -1 arasındaki değerler, genel öğrenci grubunun altında performans gösteriyor. Bu durum, öğretim ve kaynak kullanımında belirli bir strateji değişikliği gerektirebilir.",[],{"_key":1173,"_type":8,"children":1174,"markDefs":1179,"style":30},"b427fe831d4e",[1175],{"_key":1176,"_type":12,"marks":1177,"text":1178},"2c6f03f96077",[],"Ayrıca, Z-skorlarıyla birlikte, öğrencilerin çeşitli özellikleri (örneğin, öğrenim süreleri, aile gelir düzeyleri, okul türü gibi) ile ilgili korelasyon analizi yapılarak, başarıyı etkileyen faktörler üzerinde derinlemesine bir analiz yapılabilir. Örneğin, öğretmen kalitesi ile öğrenci başarısı arasında güçlü bir pozitif ilişki bulunmuşken, fiziksel aktivite ve ders dışı etkinliklerin etkisi sınırlı görünmektedir.",[],{"_key":1181,"_type":8,"children":1182,"markDefs":1187,"style":55},"5c4f349b2ecf",[1183],{"_key":1184,"_type":12,"marks":1185,"text":1186},"f37fe311b6f1",[],"Eksik Verilerin Önemi",[],{"_key":1189,"_type":8,"children":1190,"markDefs":1195,"style":30},"fc5bd5d01070",[1191],{"_key":1192,"_type":12,"marks":1193,"text":1194},"761656aa3c29",[],"Eksik veriler, veri analizi ve makine öğrenimi modelleme süreçlerinde çeşitli olumsuz etkilere neden olabilir:",[],{"_key":1197,"_type":8,"children":1198,"level":356,"listItem":357,"markDefs":1207,"style":30},"1f22c41689ee",[1199,1203],{"_key":1200,"_type":12,"marks":1201,"text":1202},"0c545651a5c7",[18],"Analiz Doğruluğu",{"_key":1204,"_type":12,"marks":1205,"text":1206},"b1ea298a54d0",[],": Eksik veriler, analizlerin doğruluğunu etkileyebilir. Örneğin, bir grup öğrenci üzerinde yapılan bir çalışma, eksik veriler nedeniyle yanlış sonuçlar verebilir.",[],{"_key":1209,"_type":8,"children":1210,"level":356,"listItem":357,"markDefs":1219,"style":30},"54fc0b611566",[1211,1215],{"_key":1212,"_type":12,"marks":1213,"text":1214},"8fe934bc55ed",[18],"Model Performansı",{"_key":1216,"_type":12,"marks":1217,"text":1218},"501abe6ab70d",[],": Makine öğrenimi modelleri, eksik verilere karşı hassastır. Eksik veriler, modelin öğrenme sürecini olumsuz yönde etkileyebilir, bu da tahminlerin kalitesini düşürür.",[],{"_key":1221,"_type":8,"children":1222,"level":356,"listItem":357,"markDefs":1231,"style":30},"41257db3829b",[1223,1227],{"_key":1224,"_type":12,"marks":1225,"text":1226},"0bc3616ecee0",[18],"Yanlış Karar Alma",{"_key":1228,"_type":12,"marks":1229,"text":1230},"c3edddc87ff5",[],": Analiz ve modelleme süreçlerinde eksik verilerin göz ardı edilmesi, yanlış kararların alınmasına neden olabilir. Bu da organizasyonlar için büyük maliyetler ve kayıplar doğurabilir.",[],{"_key":1233,"_type":8,"children":1234,"markDefs":1239,"style":30},"c1f6cb5d7581",[1235],{"_key":1236,"_type":12,"marks":1237,"text":1238},"9b894b2f0d1a",[],"Sonuç olarak, eksik veri yönetimi, veri analizi ve makine öğrenimi süreçlerinde önemli bir rol oynamaktadır. Eksik verilerin doğru bir şekilde yönetilmesi, veri setinin kalitesini artırır ve analizlerin doğruluğunu sağlar. Herkesin anlayabileceği basit bir dil kullanarak, eksik veri yönetiminin temel kavramlarını ve önemini açıklamak, veri bilimi ve analitiği alanında çalışan bireyler için kritik bir adımdır.",[],{"_key":1241,"_type":8,"children":1242,"markDefs":1246,"style":30},"03412608b7f4",[1243],{"_key":1244,"_type":12,"marks":1245,"text":158},"c0a16e272a07",[],[],{"_key":1248,"_type":8,"children":1249,"markDefs":1253,"style":30},"3631f18af71e",[1250],{"_key":1251,"_type":12,"marks":1252,"text":158},"fd5033ece001",[],[],[1255],"Veri","Kaliteli analiz temiz veriyle başlar. Veri hazırlama süreçlerini, yaygın hataları tespit etme yöntemlerini ve veri temizleme tekniklerini pratik örneklerle keşfedin.",{"_type":1258,"asset":1259},"image",{"_ref":1260,"_type":1261},"image-a34bef96cbc9de1b9ecd3e8d5d6ae9cc80abcd60-2400x1260-webp","reference","2026-01-02T18:25:21.411Z","veri-analizi-bolum-2-veri-hazirlama-ve-temizleme-teknikleri","Veri Analizi Bölüm 2 | Veri Hazırlama Ve Temizleme Teknikleri",{"body":1266,"categories":2197,"excerpt":2198,"mainImage":2199,"publishedAt":2202,"slug":2203,"title":2204},[1267,1275,1305,1313,1325,1337,1349,1361,1373,1385,1393,1401,1409,1417,1425,1433,1441,1449,1457,1465,1473,1481,1489,1501,1513,1525,1533,1541,1556,1564,1586,1594,1602,1614,1626,1634,1642,1654,1666,1673,1676,1684,1691,1694,1701,1709,1713,1721,1728,1759,1767,1775,1783,1791,1799,1807,1815,1822,1825,1833,1840,1843,1850,1858,1874,1882,1890,1898,1906,1913,1916,1924,1931,1934,1942,1946,1954,1977,1984,1995,2003,2015,2027,2039,2047,2050,2057,2060,2067,2078,2086,2098,2110,2122,2130,2133,2139,2142,2149,2157,2165,2173,2176,2179],{"_key":1268,"_type":8,"children":1269,"markDefs":1274,"style":55},"39a765210691",[1270],{"_key":1271,"_type":12,"marks":1272,"text":1273},"21f0b38f493d",[],"Veri Bilimi Nedir?",[],{"_key":1276,"_type":8,"children":1277,"markDefs":1300,"style":30},"17817f1fc343",[1278,1282,1287,1291,1296],{"_key":1279,"_type":12,"marks":1280,"text":1281},"875a4c38e96b",[],"Veri analizi, istatistik, matematik ve bilgisayar bilimleri gibi çeşitli alanların birleşimiyle oluşan bir disiplindir. Veri bilimi, büyük veri setlerinden anlamlı bilgiler elde etmek, bu bilgileri görselleştirmek ve karar almalalarda kullanmak için yöntemler geliştirmeyi amaçlar. Veri bilimi, günümüzde birçok sektörde, önemli bir rol oynamaktadır. Hiç şüphesiz ki geleceğin en gözde bilimlerinden birisi olacak. Dünya Ekonomik Forumu (WEF) 2023 İşlerin Geleceği Raporuna göz atmak için ",{"_key":1283,"_type":12,"marks":1284,"text":1286},"83f9a33d8ba1",[1285],"cc1ab29a300a","buraya",{"_key":1288,"_type":12,"marks":1289,"text":1290},"dbdafd2a14d0",[]," ",{"_key":1292,"_type":12,"marks":1293,"text":1295},"c0e41ebd28be",[1294],"0867a6c5ebe3","tıklayın",{"_key":1297,"_type":12,"marks":1298,"text":1299},"b4515d1107ce",[],".",[1301,1304],{"_key":1285,"_type":1302,"href":1303},"link","https://www.weforum.org/agenda/2023/05/future-of-jobs-2023-skills/",{"_key":1294,"_type":1302,"href":1303},{"_key":1306,"_type":8,"children":1307,"markDefs":1312,"style":30},"aa1c2df966a0",[1308],{"_key":1309,"_type":12,"marks":1310,"text":1311},"ea1154ff181c",[],"Bir veri bilimcisi, büyük veri setlerini analiz ederek anlamlı bilgiler elde etmeyi ve bu bilgileri iş süreçlerine entegre etmeyi amaçlar. Ana görevleri arasında şunlar yer alır:",[],{"_key":1314,"_type":8,"children":1315,"level":356,"listItem":357,"markDefs":1324,"style":30},"64bfe5bb8b9b",[1316,1320],{"_key":1317,"_type":12,"marks":1318,"text":1319},"cae8cb9d7df1",[18],"Veri Toplama ve Hazırlama:",{"_key":1321,"_type":12,"marks":1322,"text":1323},"00305fb6be27",[]," Veri kaynaklarını belirleyip, verileri toplamak, temizlemek ve dönüştürmek.",[],{"_key":1326,"_type":8,"children":1327,"level":356,"listItem":357,"markDefs":1336,"style":30},"deca2472f90c",[1328,1332],{"_key":1329,"_type":12,"marks":1330,"text":1331},"37c4da14d0b2",[18],"Model Geliştirme:",{"_key":1333,"_type":12,"marks":1334,"text":1335},"11c4284d3db2",[]," İstatistiksel ve makine öğrenimi modelleri geliştirerek tahminler yapmak.",[],{"_key":1338,"_type":8,"children":1339,"level":356,"listItem":357,"markDefs":1348,"style":30},"a5b075f23a3b",[1340,1344],{"_key":1341,"_type":12,"marks":1342,"text":1343},"f7a987060109",[18],"Veri Analizi:",{"_key":1345,"_type":12,"marks":1346,"text":1347},"543bee9554ce",[]," Verileri analiz ederek eğilimleri, kalıpları ve anormallikleri keşfetmek.",[],{"_key":1350,"_type":8,"children":1351,"level":356,"listItem":357,"markDefs":1360,"style":30},"f569e64266df",[1352,1356],{"_key":1353,"_type":12,"marks":1354,"text":1355},"ec8b7cdcb749",[18],"Sonuçların İletilmesi:",{"_key":1357,"_type":12,"marks":1358,"text":1359},"4a9d4652deff",[]," Analiz sonuçlarını görselleştirerek ve raporlar oluşturarak iş ortaklarıyla, şirketlerle, paydaşlarla etkili bir şekilde iletişim kurmak.",[],{"_key":1362,"_type":8,"children":1363,"level":356,"listItem":357,"markDefs":1372,"style":30},"5c8263d0f5de",[1364,1368],{"_key":1365,"_type":12,"marks":1366,"text":1367},"c6e1f49b1d5e",[18],"Hedef Belirleme:",{"_key":1369,"_type":12,"marks":1370,"text":1371},"587a61f4ed44",[]," İş hedeflerine ulaşmak için veri tabanlı stratejiler geliştirmek.",[],{"_key":1374,"_type":8,"children":1375,"level":356,"listItem":357,"markDefs":1384,"style":30},"0ee283d9d6b1",[1376,1380],{"_key":1377,"_type":12,"marks":1378,"text":1379},"f918aeed2f3a",[18],"Deneysel Tasarım:",{"_key":1381,"_type":12,"marks":1382,"text":1383},"818ea746e578",[]," A/B testleri ve diğer deneysel yöntemlerle veri toplamak ve geleceğe dair kullanıcı deneyimlerine, şirket kararlarına yönelik iyileştirmeler yapmak.",[],{"_key":1386,"_type":8,"children":1387,"markDefs":1392,"style":55},"721086c9f180",[1388],{"_key":1389,"_type":12,"marks":1390,"text":1391},"42eefcb5c67b",[],"Veri Analizi Nedir?",[],{"_key":1394,"_type":8,"children":1395,"markDefs":1400,"style":30},"716669ef7056",[1396],{"_key":1397,"_type":12,"marks":1398,"text":1399},"4ad0e41b0577",[],"Verileri analiz edip verilerden anlam çıkarmak, daha iyi kararlar almamızı sağlar. Bu süreçte ham verileri işlenir ve düzene koyulur. Bu süreçlerin amacı şirket, şahıs veya kurumlara karar verme süreçlerinde yardımcı olmaktır.",[],{"_key":1402,"_type":8,"children":1403,"markDefs":1408,"style":30},"ceb4c741749f",[1404],{"_key":1405,"_type":12,"marks":1406,"text":1407},"40f6ae830ef0",[],"Her zamankinden daha fazla veriye sahip olduğumuz bir zamanda yaşıyoruz. Bu nedenle, şirketler verileri kullanmanın faydalarını fark ediyor ve iş hedeflerine ulaşmak için içgörüler bulmak amacıyla veri analizine yöneliyor.",[],{"_key":1410,"_type":8,"children":1411,"markDefs":1416,"style":30},"660d9e0194c7",[1412],{"_key":1413,"_type":12,"marks":1414,"text":1415},"7bd513da0d81",[],"Veri analizi, verilerin içindeki anlamları keşfetmek, analizi yapılan kullanıcı kitlesinin eğilimlerini ve karar verme süreçlerini daha iyi anlamak ve bu eğilimlere yönelik daha sağlıklı kararlar almamıza olanak sağlaması amacıyla yapılır.",[],{"_key":1418,"_type":8,"children":1419,"markDefs":1424,"style":316},"fe3b6328c4f8",[1420],{"_key":1421,"_type":12,"marks":1422,"text":1423},"4357ea5b15e0",[],"Veri Analistinin Görevleri",[],{"_key":1426,"_type":8,"children":1427,"markDefs":1432,"style":30},"67a281ec3be1",[1428],{"_key":1429,"_type":12,"marks":1430,"text":1431},"3a68b2634156",[],"Bir veri analisti, veri toplama, işleme, analiz etme ve sonuçları yorumlama süreçlerinden sorumludur. Ana görevleri arasında şunlar yer alır:",[],{"_key":1434,"_type":8,"children":1435,"level":356,"listItem":357,"markDefs":1440,"style":30},"92f95bf9cc5b",[1436],{"_key":1437,"_type":12,"marks":1438,"text":1439},"78b4ee1aefdf",[],"Veri analistleri, değerli içgörüler sağlamak için verileri toplamak ve analiz etmekten sorumludur.",[],{"_key":1442,"_type":8,"children":1443,"level":356,"listItem":357,"markDefs":1448,"style":30},"4571f340140b",[1444],{"_key":1445,"_type":12,"marks":1446,"text":1447},"526605aaa4fb",[],"Veritabanlarını yönetir, sorunları giderir ve performansı optimize ederler.",[],{"_key":1450,"_type":8,"children":1451,"level":356,"listItem":357,"markDefs":1456,"style":30},"cfc9eb5648d6",[1452],{"_key":1453,"_type":12,"marks":1454,"text":1455},"8afe8b83ed6f",[],"Veri analistleri karar almaya yardımcı olmak için ilgili birime veya kişilere raporlar oluşturur.",[],{"_key":1458,"_type":8,"children":1459,"level":356,"listItem":357,"markDefs":1464,"style":30},"2b5c609a333f",[1460],{"_key":1461,"_type":12,"marks":1462,"text":1463},"919db16853dc",[],"Veri setlerini görselleştirerek önemli bilgileri ortaya çıkarmak.",[],{"_key":1466,"_type":8,"children":1467,"level":356,"listItem":357,"markDefs":1472,"style":30},"957a45919ded",[1468],{"_key":1469,"_type":12,"marks":1470,"text":1471},"c9ee18829ed3",[],"Analiz sonuçlarını ilgililerle paylaşmak.",[],{"_key":1474,"_type":8,"children":1475,"markDefs":1480,"style":316},"8bc48cd9566c",[1476],{"_key":1477,"_type":12,"marks":1478,"text":1479},"481d0185cd2d",[],"Veri Bilimci ve Veri Analistinin Farkı Nedir?",[],{"_key":1482,"_type":8,"children":1483,"markDefs":1488,"style":30},"02c6c49ab0bf",[1484],{"_key":1485,"_type":12,"marks":1486,"text":1487},"adbdffb65259",[],"E-ticaret şirketinde çalışan bir veri bilimci ve bir veri analistini düşünelim. Bu iki kişi veri yönetimi süreçlerinde farklı roller üstlenirler",[],{"_key":1490,"_type":8,"children":1491,"markDefs":1500,"style":30},"f8dc4feb40f1",[1492,1496],{"_key":1493,"_type":12,"marks":1494,"text":1495},"fbaa092cfd3e",[18],"Veri Analisti",{"_key":1497,"_type":12,"marks":1498,"text":1499},"4ff46d10eb51",[],", geçmiş verileri analiz ederek mevcut durumu anlamaya çalışır. Örneğin, hangi ürünlerin revaçta olduğunu, müşteri davranışlarını ve iade-satış oranlarını inceleyerek, “kampanyalarımızın sonucu ne oldu?” veya “Satışlar hangi dönemde arttı veya azaldı?” gibi sorulara yanıt verir. Analist, verileri toplar, temizler ve görselleştirir; sonrasında bu bilgileri raporlar. Örneğin, kısa ve uzun vadede verileri analiz ederek, ilgili birim ve kişilerin gelecekteki kampanya kararlarına ışık tutar. Analistler, geçmiş performansı değerlendirerek operasyonların iyileştirilmesine katkıda bulunur ve karar vericilerin daha sağlıklı kararlar vermesine yardımcı olur.",[],{"_key":1502,"_type":8,"children":1503,"markDefs":1512,"style":30},"1118cb06e3fc",[1504,1508],{"_key":1505,"_type":12,"marks":1506,"text":1507},"b55f1a1600e6",[18],"Veri Bilimcisi",{"_key":1509,"_type":12,"marks":1510,"text":1511},"3cf19e30ee67",[]," ise, daha karmaşık analizler yaparak geleceğe yönelik öngörüler sunar. Örneğin, makine öğrenimi algoritmalarını kullanarak müşteri segmentasyonunu gerçekleştirir, satış tahminleri için zaman serisi analizi yapar ve tavsiye sistemleri geliştirir. Bu sistemlerle müşterilere kişiselleştirilmiş ürün önerileri sunulur, böylece satışlar artırılır.",[],{"_key":1514,"_type":8,"children":1515,"markDefs":1524,"style":30},"2e6c7678f6d8",[1516,1520],{"_key":1517,"_type":12,"marks":1518,"text":1519},"1919f98d2dcb",[18],"Veri bilimcisi",{"_key":1521,"_type":12,"marks":1522,"text":1523},"0d3191abab48",[],", “Hangi müşteriler bir sonraki ay alışveriş yapacak?” veya “Hangi ürünler önerilirse sepet oranı artar?” gibi soruları yanıtlar. Aynı zamanda, model performansını artırmak için hiperparametre optimizasyonu yapar ve sonuçları şirket stratejilerine yön verecek şekilde raporlar. Bu, şirketin geleceğe dair daha isabetli kararlar almasını sağlar ve stratejik planlamaya doğrudan katkı yapar.",[],{"_key":1526,"_type":8,"children":1527,"markDefs":1532,"style":30},"740de18818a3",[1528],{"_key":1529,"_type":12,"marks":1530,"text":1531},"ee57aa3f7cad",[],"Özetle, veri bilimcisi derin analiz ve modelleme yaparak yenilikçi çözümler sunar ve geleceği aydınlatır, veri analisti geçmişi aydınlatır veri toplama ve raporlama ile iş stratejilerine içgörü sağlar.",[],{"_key":1534,"_type":8,"children":1535,"markDefs":1540,"style":30},"1e1a17154bdc",[1536],{"_key":1537,"_type":12,"marks":1538,"text":1539},"aa087532b492",[],"Veri bilimcisi ve veri analistinin farkını anladığımıza göre veri analizinin temellerini anlamaya geçebiliriz.",[],{"_key":1542,"_type":8,"children":1543,"markDefs":1553,"style":120},"86a3833b376f",[1544,1548],{"_key":1545,"_type":12,"marks":1546,"text":1547},"7cec7f7b1262",[],"ÖRNEK VERİ SETİNE ERİŞMEK İÇİN ",{"_key":1549,"_type":12,"marks":1550,"text":1552},"dde7bd4be089",[1551],"d92302b746e6","TIKLAYIN",[1554],{"_key":1551,"_type":1302,"href":1555},"https://www.kaggle.com/datasets/fehu94/sales-forecast-analysis-project",{"_key":1557,"_type":8,"children":1558,"markDefs":1563,"style":55},"da4ab4200c99",[1559],{"_key":1560,"_type":12,"marks":1561,"text":1562},"7c7a1fc2cc2f",[18],"Veri Türleri",[],{"_key":1565,"_type":8,"children":1566,"markDefs":1585,"style":30},"d971e4f6dc19",[1567,1571,1575,1578,1582],{"_key":1568,"_type":12,"marks":1569,"text":1570},"0a8967d23d75",[],"Veri türleri, analiz yöntemlerini ve uygulanacak modellemeleri belirlemek için kritik bir role sahiptir. Veri analizine başlamadan önce, hangi türde veri ile çalıştığımızı anlamak önemlidir. Genel olarak veriler iki ana kategoriye ayrılır: ",{"_key":1572,"_type":12,"marks":1573,"text":1574},"463304ac397c",[18],"Nitel (kategorik) veriler",{"_key":1576,"_type":12,"marks":1577,"text":519},"d9ebf0e6f475",[],{"_key":1579,"_type":12,"marks":1580,"text":1581},"4abeb832dd7a",[18],"Nicel (sayısal) veriler",{"_key":1583,"_type":12,"marks":1584,"text":1299},"aaabee3fc80c",[],[],{"_key":1587,"_type":8,"children":1588,"markDefs":1593,"style":316},"6f9f29dbabc0",[1589],{"_key":1590,"_type":12,"marks":1591,"text":1592},"5a57f9a8c39a",[],"1. Nitel (Kategorik) Veriler:",[],{"_key":1595,"_type":8,"children":1596,"markDefs":1601,"style":30},"1af32220ecf3",[1597],{"_key":1598,"_type":12,"marks":1599,"text":1600},"96c92fbf8e52",[],"Bu veriler sayısal olmayan, sınıflandırmalar veya etiketler içeren verilerdir. Genellikle belirli bir sıralama ya da sayısal anlam taşımazlar.",[],{"_key":1603,"_type":8,"children":1604,"level":356,"listItem":357,"markDefs":1613,"style":30},"69e0ef9c094f",[1605,1609],{"_key":1606,"_type":12,"marks":1607,"text":1608},"5b5f46ac65fb",[18],"Nominal Veriler:",{"_key":1610,"_type":12,"marks":1611,"text":1612},"0c9d0e835f22",[]," Kategoriler arasında sıralama veya sayısal fark yoktur. Örneğin: Cinsiyet (Erkek, Kadın), Renk (Kırmızı, Mavi, Yeşil).",[],{"_key":1615,"_type":8,"children":1616,"level":356,"listItem":357,"markDefs":1625,"style":30},"55dccdb9cfc2",[1617,1621],{"_key":1618,"_type":12,"marks":1619,"text":1620},"7e2b06584e55",[18],"Ordinal Veriler:",{"_key":1622,"_type":12,"marks":1623,"text":1624},"3150c26e6fd8",[]," Kategoriler arasında sıralama vardır, ancak aralarındaki farklar ölçülemez. Örneğin: Eğitim seviyesi (Lise, Lisans, Yüksek Lisans), Memnuniyet seviyesi (Düşük, Orta, Yüksek).",[],{"_key":1627,"_type":8,"children":1628,"markDefs":1633,"style":316},"e88e43784ce0",[1629],{"_key":1630,"_type":12,"marks":1631,"text":1632},"d2c74089fc74",[],"2. Nicel (Sayısal) Veriler:",[],{"_key":1635,"_type":8,"children":1636,"markDefs":1641,"style":30},"915892b0ba50",[1637],{"_key":1638,"_type":12,"marks":1639,"text":1640},"58f614c038c0",[],"Bu veriler sayısal değerler içerir ve aritmetik işlemler yapılabilir. Nicel veriler daha ölçülebilir ve spesifik bilgileri ifade eder.",[],{"_key":1643,"_type":8,"children":1644,"level":356,"listItem":357,"markDefs":1653,"style":30},"9c4b4049874b",[1645,1649],{"_key":1646,"_type":12,"marks":1647,"text":1648},"476972aa61f8",[18],"Kesikli (Discrete) Veriler:",{"_key":1650,"_type":12,"marks":1651,"text":1652},"9c04cdee9128",[]," Sayılabilir, tam sayı olarak ifade edilebilen verilerdir. Örneğin: Öğrenci sayısı, satılan ürün miktarı.",[],{"_key":1655,"_type":8,"children":1656,"level":356,"listItem":357,"markDefs":1665,"style":30},"8fd31f5a31ad",[1657,1661],{"_key":1658,"_type":12,"marks":1659,"text":1660},"893a3510ada6",[18],"Sürekli (Continuous) Veriler:",{"_key":1662,"_type":12,"marks":1663,"text":1664},"552d37e206a3",[]," Belirli bir aralıkta sonsuz değer alabilen verilerdir. Örneğin: Ağırlık, boy, sıcaklık gibi ölçülebilir veriler.",[],{"_key":1667,"_type":8,"children":1668,"markDefs":1672,"style":30},"b8f08f9913bc",[1669],{"_key":1670,"_type":12,"marks":1671,"text":158},"5313e1bed682",[],[],{"_key":1674,"_type":140,"code":1675,"language":142},"0e5654c46418","import pandas as pd\n\n# Veri setini yükleyelim\ndf = pd.read_csv('House_Price_Prediction.csv')\n\n# Nitel ve Nicel veri türlerini ayıralım\ncategorical_columns = df.select_dtypes(include=['object']).columns\nnumerical_columns = df.select_dtypes(include=['int64', 'float64']).columns\n\nprint(\"Kategorik Sütunlar: \", categorical_columns)\nprint(\"Sayısal Sütunlar: \", numerical_columns)\n\n# Nitel verileri analiz etmek (örneğin kategorik verilerin benzersiz değerlerini görmek)\nfor col in categorical_columns:\n    print(f\"{col} sütununun benzersiz değerleri: {df[col].unique()}\")\n\n# Nicel verilerin özet istatistikleri\nprint(df[numerical_columns].describe())",{"_key":1677,"_type":8,"children":1678,"markDefs":1683,"style":30},"30e34c050617",[1679],{"_key":1680,"_type":12,"marks":1681,"text":1682},"02dbb4a8d7a8",[],"\nHazır veri seti kullanmak yerine kendi verilerimizi tanımlayarak aynı analiz işlemlerini yapabiliriz",[],{"_key":1685,"_type":8,"children":1686,"markDefs":1690,"style":30},"b31c4b8f7ab3",[1687],{"_key":1688,"_type":12,"marks":1689,"text":158},"5df01c1794ad",[],[],{"_key":1692,"_type":140,"code":1693,"language":142},"12d7aa83c572","import pandas as pd\n\n# Örnek veri seti oluşturalım\ndata = {\n    'Cinsiyet': ['Erkek', 'Kadın', 'Kadın', 'Erkek', 'Kadın'],\n    'Eğitim Seviyesi': ['Lise', 'Lisans', 'Lisans', 'Yüksek Lisans', 'Lise'],\n    'Yaş': [25, 30, 22, 35, 28],\n    'Gelir': [3000, 4500, 3200, 5000, 4200]\n}\n\ndf = pd.DataFrame(data)\n\n# Nitel ve Nicel veri türlerini ayıralım\ncategorical_columns = df.select_dtypes(include=['object']).columns\nnumerical_columns = df.select_dtypes(include=['int64', 'float64']).columns\n\nprint(\"Kategorik Sütunlar: \", categorical_columns)\nprint(\"Sayısal Sütunlar: \", numerical_columns)\n\n# Nitel verileri analiz etmek (örneğin kategorik verilerin benzersiz değerlerini görmek)\nfor col in categorical_columns:\n    print(f\"{col} sütununun benzersiz değerleri: {df[col].unique()}\")\n\n# Nicel verilerin özet istatistikleri\nprint(df[numerical_columns].describe())",{"_key":1695,"_type":8,"children":1696,"markDefs":1700,"style":30},"9451b06e585a",[1697],{"_key":1698,"_type":12,"marks":1699,"text":158},"0cffe5449530",[],[],{"_key":1702,"_type":8,"children":1703,"markDefs":1708,"style":55},"afe3a18da502",[1704],{"_key":1705,"_type":12,"marks":1706,"text":1707},"def6968e3be3",[],"Kesikli Veriler (Discrete Data) ve Sürekli Veriler (Continuous Data)",[],{"_key":1710,"_type":1258,"asset":1711},"45928ef68e4a",{"_ref":1712,"_type":1261},"image-976cfc3aa7ed95dabd491c5d99a808d66374c30d-1600x1200-webp",{"_key":1714,"_type":8,"children":1715,"markDefs":1720,"style":151},"66519b2eefc4",[1716],{"_key":1717,"_type":12,"marks":1718,"text":1719},"d65520e1d486",[],"Kesikli ve Düzenli Veri Farkı",[],{"_key":1722,"_type":8,"children":1723,"markDefs":1727,"style":30},"be7b10557e40",[1724],{"_key":1725,"_type":12,"marks":1726,"text":158},"ad3b5fe57da7",[],[],{"_key":1729,"_type":8,"children":1730,"markDefs":1756,"style":30},"747441a4bd10",[1731,1735,1739,1744,1748,1752],{"_key":1732,"_type":12,"marks":1733,"text":1734},"13838ec5a8b6",[18],"Ayrık veriler,",{"_key":1736,"_type":12,"marks":1737,"text":1738},"4e7302173897",[]," Bu tür veriler genellikle sayılarla ifade edilir, istatistiklerde sayılabilir, bireyselleştirilmiş ve bölünemez rakamları ifade eder. Bu veri noktaları yalnızca belirli artışlarla mevcuttur. Veri analistleri ve istatistikçiler, ",{"_key":1740,"_type":12,"marks":1741,"text":1743},"17d1122c27e4",[1742,18],"ae9e0dcd6f43","çubuk grafikler, histogramlar",{"_key":1745,"_type":12,"marks":1746,"text":1747},"a5a0e01e098b",[]," , çizgi grafikler ve pasta grafikler kullanarak ayrık verileri görselleştirir.\n\nAyrık veriler , sınırlı bir zaman diliminde sayabileceğiniz ",{"_key":1749,"_type":12,"marks":1750,"text":1751},"ce50580b24d8",[18],"ayrık değişkenleri temsil eder. Buradaki temel özellik, bu değişkenlerin ölçülebilir yerine sayılabilir olmasıdır.",{"_key":1753,"_type":12,"marks":1754,"text":1755},"f19e8f257e57",[]," Örneğin, sınıf mevcudu, müşteri sipariş sayısı veya bozuk ürün sayısı gibi değişkenler kesikli verilerdir.",[1757],{"_key":1742,"_type":1302,"href":1758},"https://www.g2.com/articles/histogram-vs-bar-graph",{"_key":1760,"_type":8,"children":1761,"level":356,"listItem":357,"markDefs":1766,"style":30},"c4f565bd091e",[1762],{"_key":1763,"_type":12,"marks":1764,"text":1765},"1cc231bca6b5",[],"Ürün incelemelerinin sayısı",[],{"_key":1768,"_type":8,"children":1769,"level":356,"listItem":357,"markDefs":1774,"style":30},"d6417c4352eb",[1770],{"_key":1771,"_type":12,"marks":1772,"text":1773},"3d441e013c49",[],"Bir günde satılan bilet sayısı",[],{"_key":1776,"_type":8,"children":1777,"level":356,"listItem":357,"markDefs":1782,"style":30},"fd24a80f5898",[1778],{"_key":1779,"_type":12,"marks":1780,"text":1781},"74d7de99deba",[],"Sınıfınızdaki öğrenci sayısı",[],{"_key":1784,"_type":8,"children":1785,"level":356,"listItem":357,"markDefs":1790,"style":30},"45ed4419aee0",[1786],{"_key":1787,"_type":12,"marks":1788,"text":1789},"a5e4506c736d",[],"Bir şirketteki çalışan sayısı",[],{"_key":1792,"_type":8,"children":1793,"level":356,"listItem":357,"markDefs":1798,"style":30},"4ebb09252f3e",[1794],{"_key":1795,"_type":12,"marks":1796,"text":1797},"514ddd1d6084",[],"Her bölümdeki bilgisayar sayısı",[],{"_key":1800,"_type":8,"children":1801,"level":356,"listItem":357,"markDefs":1806,"style":30},"7dc2a72fc2d1",[1802],{"_key":1803,"_type":12,"marks":1804,"text":1805},"45eefb5cbbf4",[],"Farklı ürünler satın alan müşteri sayısı",[],{"_key":1808,"_type":8,"children":1809,"markDefs":1814,"style":120},"4e5103ffa592",[1810],{"_key":1811,"_type":12,"marks":1812,"text":1813},"5c8e499f0043",[],"Python Örneği (Kesikli Veri — Örnek Veri Seti)",[],{"_key":1816,"_type":8,"children":1817,"markDefs":1821,"style":30},"b87c6fc92865",[1818],{"_key":1819,"_type":12,"marks":1820,"text":158},"ae36a0c1b747",[],[],{"_key":1823,"_type":140,"code":1824,"language":142},"4e12cdace73d","import pandas as pd\n\n# Örnek veri seti oluştur\nveri = {'Cinsiyet': ['Erkek', 'Kadın', 'Erkek', 'Kadın', 'Erkek'],\n        'Yaş': [25, 30, 22, 35, 28],\n        'Eğitim Seviyesi': ['Lisans', 'Yüksek Lisans', 'Lise', 'Lisans', 'Lisans']}\n\ndf = pd.DataFrame(veri)\n\n# Kesikli değişkenlerin benzersiz değerleri ve frekansları\nkesikli_veriler = df['Eğitim Seviyesi'].value_counts()\nprint(kesikli_veriler)",{"_key":1826,"_type":8,"children":1827,"markDefs":1832,"style":151},"10d96373ff85",[1828],{"_key":1829,"_type":12,"marks":1830,"text":1831},"a882cc1d54f4",[],"Çıktısı hemen aşağıdaki gibi olacaktır",[],{"_key":1834,"_type":8,"children":1835,"markDefs":1839,"style":30},"c6caf59a6d69",[1836],{"_key":1837,"_type":12,"marks":1838,"text":158},"ae1271cb1fc9",[],[],{"_key":1841,"_type":140,"code":1842},"54f2c9b8d000","Lisans           3\nYüksek Lisans    1\nLise             1\nName: Eğitim Seviyesi, dtype: int64",{"_key":1844,"_type":8,"children":1845,"markDefs":1849,"style":30},"095a074406d9",[1846],{"_key":1847,"_type":12,"marks":1848,"text":158},"8dbf52779b03",[],[],{"_key":1851,"_type":8,"children":1852,"markDefs":1857,"style":316},"7e4624704860",[1853],{"_key":1854,"_type":12,"marks":1855,"text":1856},"9248229fa84b",[],"2. Sürekli Veriler (Continuous Data)",[],{"_key":1859,"_type":8,"children":1860,"markDefs":1873,"style":30},"877c389388de",[1861,1865,1869],{"_key":1862,"_type":12,"marks":1863,"text":1864},"90784a99a6da",[],"Sürekli veriler tamamen doğrulukla ilgilidir. Bu nedenle, ",{"_key":1866,"_type":12,"marks":1867,"text":1868},"aaa1e3a419dc",[18],"sürekli değişkenler",{"_key":1870,"_type":12,"marks":1871,"text":1872},"893d457114b6",[]," genellikle ondalık noktalar taşır. Bu ondalık noktalar, iki tanımlanmış veri noktası arasında kesin bir ölçüm sunar.",[],{"_key":1875,"_type":8,"children":1876,"markDefs":1881,"style":30},"2e072d13e9b4",[1877],{"_key":1878,"_type":12,"marks":1879,"text":1880},"092c6e467a8d",[],"Bu veriler genellikle ölçüm sonucu elde edilir ve çok ince düzeydeki farkları bile gösterebilir. Sürekli veriler arasında sayısal bir ilişki vardır ve aradaki her değeri içerebilirler. Örneğin, boy, ağırlık, sıcaklık gibi değişkenler sürekli veriler olarak kabul edilir. Örneğin:",[],{"_key":1883,"_type":8,"children":1884,"level":356,"listItem":357,"markDefs":1889,"style":30},"dd58f3ac0443",[1885],{"_key":1886,"_type":12,"marks":1887,"text":1888},"8cc99e5955c1",[],"Bir kişinin boyu (175.3 cm, 180.2 cm gibi her değer olabilir).",[],{"_key":1891,"_type":8,"children":1892,"level":356,"listItem":357,"markDefs":1897,"style":30},"2d779685a1df",[1893],{"_key":1894,"_type":12,"marks":1895,"text":1896},"4af879f53bc9",[],"Bir şehrin yıllık ortalama sıcaklığı (25.6°C, 26.2°C gibi).",[],{"_key":1899,"_type":8,"children":1900,"markDefs":1905,"style":120},"8837df29b7d5",[1901],{"_key":1902,"_type":12,"marks":1903,"text":1904},"c7fc2f3a27c7",[],"Python Örneği (Sürekli Veri — House Price Prediction Dataset):",[],{"_key":1907,"_type":8,"children":1908,"markDefs":1912,"style":30},"34d6fc6f0975",[1909],{"_key":1910,"_type":12,"marks":1911,"text":158},"b3fbccb796bd",[],[],{"_key":1914,"_type":140,"code":1915,"language":142},"9f440e11cb9d","import pandas as pd\n\n# Veri setini yükleyelim\ndf = pd.read_csv(\"House_Price_Prediction.csv\")\n\n# Sürekli değişkenlerin istatistiksel analizi\nsürekli_veriler = df[['Area', 'Price', 'Rooms']].describe()\nprint(sürekli_veriler)",{"_key":1917,"_type":8,"children":1918,"markDefs":1923,"style":151},"c479f2ac5361",[1919],{"_key":1920,"_type":12,"marks":1921,"text":1922},"8812dbed7574",[],"Çıktı aşağıdaki gibi olacaktır",[],{"_key":1925,"_type":8,"children":1926,"markDefs":1930,"style":30},"2d8243436bf8",[1927],{"_key":1928,"_type":12,"marks":1929,"text":158},"31d19b235b18",[],[],{"_key":1932,"_type":140,"code":1933},"67eeb0a75513","           Area          Price        Rooms\ncount   1000.000000   1000.000000  1000.000000\nmean    1500.000000  250000.000000     7.500000\nstd      300.000000   50000.000000     1.500000\nmin     1000.000000  150000.000000     5.000000\n25%     1300.000000  220000.000000     6.000000\n50%     1500.000000  250000.000000     7.000000\n75%     1700.000000  280000.000000     9.000000\nmax     2000.000000  350000.000000    10.000000",{"_key":1935,"_type":8,"children":1936,"markDefs":1941,"style":120},"448583b4fd9f",[1937],{"_key":1938,"_type":12,"marks":1939,"text":1940},"bf1a2fd033f5",[],"Sürekli ve Kesikli Verileri Daha İyi Anlamak İçin Karşılaştırma Tablosu",[],{"_key":1943,"_type":1258,"asset":1944},"8c14a3cb7fd7",{"_ref":1945,"_type":1261},"image-06f93d7900900d5ef2d83052a0e5ee18ff6e03a4-1600x1200-webp",{"_key":1947,"_type":8,"children":1948,"markDefs":1953,"style":55},"3cf5a7d9fd86",[1949],{"_key":1950,"_type":12,"marks":1951,"text":1952},"690d86f88521",[18],"Pandas, NumPy Gibi Temel Kütüphanelerin Örneklerle Kullanımı",[],{"_key":1955,"_type":8,"children":1956,"markDefs":1976,"style":30},"deb6a317d7cc",[1957,1961,1965,1968,1972],{"_key":1958,"_type":12,"marks":1959,"text":1960},"a31f4c3c8f23",[],"Veri bilimi ile çalışırken, veriyi işlemek, analiz etmek ve anlamlandırmak için Python’da yaygın olarak kullanılan iki temel kütüphane vardır: ",{"_key":1962,"_type":12,"marks":1963,"text":1964},"467d0528287d",[18],"Pandas",{"_key":1966,"_type":12,"marks":1967,"text":519},"37f868bd20dc",[],{"_key":1969,"_type":12,"marks":1970,"text":1971},"1a09ed0f4942",[18],"NumPy",{"_key":1973,"_type":12,"marks":1974,"text":1975},"786a616c71e2",[],". Bu kütüphaneler, veri manipülasyonu ve analiz süreçlerini oldukça kolaylaştırır ve veri bilimciler ile veri analistlerinin işlerini hızlandırır.",[],{"_key":1978,"_type":8,"children":1979,"markDefs":1983,"style":316},"b7904b3971bc",[1980],{"_key":1981,"_type":12,"marks":1982,"text":1964},"0143bbe7da8b",[],[],{"_key":1985,"_type":8,"children":1986,"markDefs":1994,"style":30},"7db7fede8754",[1987,1990],{"_key":1988,"_type":12,"marks":1989,"text":1964},"9abaf1146fca",[18],{"_key":1991,"_type":12,"marks":1992,"text":1993},"7a51690252bc",[],", veri analizi ve veri manipülasyonu için kullanılan en güçlü kütüphanelerden biridir. Tablo şeklinde verileri (DataFrame) işlemek, düzenlemek, filtrelemek ve analiz etmek için çeşitli fonksiyonlar sunar. Pandas, özellikle CSV, Excel gibi dosyalardan veri okuma ve bu verileri analiz etme süreçlerini basitleştirir.",[],{"_key":1996,"_type":8,"children":1997,"markDefs":2002,"style":316},"cd06fc0e4d79",[1998],{"_key":1999,"_type":12,"marks":2000,"text":2001},"3c4389f90ab7",[],"Pandas’ın Temel Özellikleri:",[],{"_key":2004,"_type":8,"children":2005,"level":356,"listItem":357,"markDefs":2014,"style":30},"303c1551dd5a",[2006,2010],{"_key":2007,"_type":12,"marks":2008,"text":2009},"d5c18fcb72b5",[18],"DataFrame ve Series",{"_key":2011,"_type":12,"marks":2012,"text":2013},"58688c18c5c9",[],": Pandas’ta veriler genellikle DataFrame ve Series yapılarında saklanır. DataFrame, iki boyutlu bir veri yapısıdır (satırlar ve sütunlar), Series ise tek boyutlu bir veri yapısıdır.",[],{"_key":2016,"_type":8,"children":2017,"level":356,"listItem":357,"markDefs":2026,"style":30},"20b15bb670c5",[2018,2022],{"_key":2019,"_type":12,"marks":2020,"text":2021},"05faf1ba6182",[18],"Veri Manipülasyonu",{"_key":2023,"_type":12,"marks":2024,"text":2025},"4383899ad4c2",[],": Verileri filtreleyebilir, birleştirebilir, sütunlar üzerinde işlemler yapabilir ve eksik verileri doldurabilirsiniz.",[],{"_key":2028,"_type":8,"children":2029,"level":356,"listItem":357,"markDefs":2038,"style":30},"9b4235602337",[2030,2034],{"_key":2031,"_type":12,"marks":2032,"text":2033},"243a9462ef84",[18],"Dosya Okuma ve Yazma",{"_key":2035,"_type":12,"marks":2036,"text":2037},"53757a764f02",[],": CSV, Excel gibi formatlardaki dosyaları kolayca okuyabilir ve işleyebilirsiniz.",[],{"_key":2040,"_type":8,"children":2041,"markDefs":2046,"style":120},"06b3aba6dbde",[2042],{"_key":2043,"_type":12,"marks":2044,"text":2045},"65863d027c3f",[],"Pandas Kütüphanesi Örnek Kullanımı:",[],{"_key":2048,"_type":140,"code":2049,"language":142},"6dbb908ca7fe","import pandas as pd\n\n# CSV dosyasını okuma\ndf = pd.read_csv('House_Price_Prediction.csv')\n\n# İlk 5 satırı görüntüleme\nprint(df.head())\n\n# Veri hakkında genel bilgi\nprint(df.info())\n\n# Sütun bazında istatistiksel özet\nprint(df.describe())",{"_key":2051,"_type":8,"children":2052,"markDefs":2056,"style":151},"465fc6b41c4f",[2053],{"_key":2054,"_type":12,"marks":2055,"text":149},"5ddec753a581",[],[],{"_key":2058,"_type":140,"code":2059},"200b3ec7ffff","   Area  Bedrooms  Price\n0  2600         3  550000\n1  3000         4  565000\n2  3200         4  610000\n3  3600         3  595000\n4  4000         5  760000\n\n\u003Cclass 'pandas.core.frame.DataFrame'>\nRangeIndex: 500 entries, 0 to 499\nData columns (total 3 columns):\n #   Column    Non-Null Count  Dtype\n---  ------    --------------  -----\n 0   Area      500 non-null    int64\n 1   Bedrooms  500 non-null    int64\n 2   Price     500 non-null    int64\ndtypes: int64(3)\nmemory usage: 11.8 KB",{"_key":2061,"_type":8,"children":2062,"markDefs":2066,"style":120},"7b95c338e8c2",[2063],{"_key":2064,"_type":12,"marks":2065,"text":1971},"a7b5982dd066",[],[],{"_key":2068,"_type":8,"children":2069,"markDefs":2077,"style":30},"95d97371d3c8",[2070,2073],{"_key":2071,"_type":12,"marks":2072,"text":1971},"aaa386872ed9",[18],{"_key":2074,"_type":12,"marks":2075,"text":2076},"4ea42002fc6a",[],", sayısal hesaplamalar için kullanılan bir kütüphanedir ve özellikle çok boyutlu diziler (array) ile çalışmayı kolaylaştırır. NumPy, büyük veri setleri üzerinde hızlı matematiksel işlemler yapabilmenizi sağlar ve Pandas gibi kütüphaneler de arka planda NumPy dizilerini kullanır.",[],{"_key":2079,"_type":8,"children":2080,"markDefs":2085,"style":120},"0f0b86e42860",[2081],{"_key":2082,"_type":12,"marks":2083,"text":2084},"61c187af28b5",[],"NumPy’nin Temel Özellikleri:",[],{"_key":2087,"_type":8,"children":2088,"level":356,"listItem":357,"markDefs":2097,"style":30},"8c86cd4cae26",[2089,2093],{"_key":2090,"_type":12,"marks":2091,"text":2092},"08dfac7e39e7",[18],"N-Dimensional Arrays",{"_key":2094,"_type":12,"marks":2095,"text":2096},"8126daf9b5ee",[],": NumPy, N-boyutlu diziler (array) üzerinde çalışır ve bu dizilerle hızlı hesaplamalar yapmanızı sağlar.",[],{"_key":2099,"_type":8,"children":2100,"level":356,"listItem":357,"markDefs":2109,"style":30},"b5a6b592768f",[2101,2105],{"_key":2102,"_type":12,"marks":2103,"text":2104},"b4d544b78784",[18],"Matematiksel Fonksiyonlar",{"_key":2106,"_type":12,"marks":2107,"text":2108},"9cbe367369c7",[],": NumPy, matris işlemleri, istatistiksel hesaplamalar gibi matematiksel fonksiyonlar sunar.",[],{"_key":2111,"_type":8,"children":2112,"level":356,"listItem":357,"markDefs":2121,"style":30},"39e88e90307c",[2113,2117],{"_key":2114,"_type":12,"marks":2115,"text":2116},"07580ff163f9",[18],"Hız ve Performans",{"_key":2118,"_type":12,"marks":2119,"text":2120},"533befab8c7f",[],": NumPy, Python’un yerleşik listelerine göre çok daha hızlıdır çünkü veri tiplerini homojen olarak tutar ve işlem gücünü optimize eder.",[],{"_key":2123,"_type":8,"children":2124,"markDefs":2129,"style":120},"a0d4941f5030",[2125],{"_key":2126,"_type":12,"marks":2127,"text":2128},"a03f16208e00",[],"NumPy Kütüphanesi Örnek Kullanımı:",[],{"_key":2131,"_type":140,"code":2132,"language":142},"9ead0712946f","import numpy as np\n\n# NumPy dizisi oluşturma\narr = np.array([1, 2, 3, 4, 5])\n\n# Dizi elemanlarına 2 ekleme\narr = arr + 2\n\n# 2x2 bir matris oluşturma\nmatris = np.array([[1, 2], [3, 4]])\n\n# Matris çarpımı\nmatris2 = np.array([[5, 6], [7, 8]])\nsonuc = np.dot(matris, matris2)\n\nprint(sonuc)",{"_key":2134,"_type":8,"children":2135,"markDefs":2138,"style":151},"b91f867a7ae4",[2136],{"_key":2054,"_type":12,"marks":2137,"text":149},[],[],{"_key":2140,"_type":140,"code":2141},"ac52ac516644","[[19 22]\n [43 50]]",{"_key":2143,"_type":8,"children":2144,"markDefs":2148,"style":30},"02089d594b2c",[2145],{"_key":2146,"_type":12,"marks":2147,"text":158},"253041f77f45",[],[],{"_key":2150,"_type":8,"children":2151,"markDefs":2156,"style":120},"683df061d755",[2152],{"_key":2153,"_type":12,"marks":2154,"text":2155},"e852215527ad",[],"Pandas ve NumPy’nin Birlikte Kullanımı",[],{"_key":2158,"_type":8,"children":2159,"markDefs":2164,"style":30},"b70488e74b1a",[2160],{"_key":2161,"_type":12,"marks":2162,"text":2163},"7a05a9fe9103",[],"Veri bilimi ve veri analizinde genellikle Pandas ve NumPy birlikte kullanılır. Pandas, veri manipülasyonu için kullanılırken, NumPy, sayısal hesaplamalar ve veri manipülasyonunda performans artışı sağlar.",[],{"_key":2166,"_type":8,"children":2167,"markDefs":2172,"style":120},"d162c28c3ea0",[2168],{"_key":2169,"_type":12,"marks":2170,"text":2171},"93b0beb60545",[],"Örnek: Pandas ve NumPy ile Veri İşleme",[],{"_key":2174,"_type":140,"code":2175,"language":142},"47e6e99cd8dd","import pandas as pd\nimport numpy as np\n\n# Veri okuma\ndf = pd.read_csv('House_Price_Prediction.csv')\n\n# Eksik verilerin doldurulması\ndf['Price'].fillna(np.mean(df['Price']), inplace=True)\n\n# NumPy ile sütunlara matematiksel işlemler uygulama\ndf['Price_Adjusted'] = np.log(df['Price'])\n\nprint(df.head())",{"_key":2177,"_type":140,"code":2178},"2ff48a72ec7b","   Area  Bedrooms  Price  Price_Adjusted\n0  2600         3  550000       13.21546\n1  3000         4  565000       13.24103\n2  3200         4  610000       13.32374\n3  3600         3  595000       13.29270\n4  4000         5  760000       13.54284",{"_key":2180,"_type":8,"children":2181,"markDefs":2196,"style":30},"107abee16a5f",[2182,2186,2189,2192],{"_key":2183,"_type":12,"marks":2184,"text":2185},"5a5fed52d1c3",[18],"Özetle Pandas",{"_key":2187,"_type":12,"marks":2188,"text":519},"2fa01bd83022",[],{"_key":2190,"_type":12,"marks":2191,"text":1971},"106b76419a94",[18],{"_key":2193,"_type":12,"marks":2194,"text":2195},"78db4b33bb1e",[],", veri bilimcilerin ve analistlerin işlerini hızlandıran ve kolaylaştıran en önemli kütüphanelerdir. Pandas, verileri işleyip analiz etmeye yönelik güçlü araçlar sunarken, NumPy performanslı matematiksel işlemler sağlar.",[],[1255],"Veri analizi dünyasına giriş yapıyoruz. Ham veriden anlamlı içgörüler çıkarmanın temel prensiplerini ve bir veri analistinin hangi görevleri üstlendiğini keşfedin.",{"_type":1258,"asset":2200},{"_ref":2201,"_type":1261},"image-8959f008990f583e0315edba8caaf83b1e2af108-2400x1260-webp","2026-01-02T17:04:06.717Z","veri-analizi-bolum-1-giris-ve-temel-kavramlar","Veri Analizi Bölüm 1 | Giriş ve Temel Kavramlar",{"body":2206,"categories":3757,"excerpt":3758,"mainImage":3759,"publishedAt":3762,"slug":3763,"title":3764},[2207,2262,2298,2306,2314,2333,2345,2365,2377,2389,2397,2413,2425,2433,2444,2468,2476,2495,2514,2526,2534,2538,2547,2555,2563,2567,2575,2583,2591,2594,2602,2610,2618,2621,2629,2637,2640,2655,2663,2671,2674,2688,2696,2704,2712,2720,2728,2731,2739,2747,2750,2758,2765,2773,2801,2817,2825,2832,2836,2844,2851,2859,2867,2887,2910,2918,2938,2954,2962,2977,2985,2993,3001,3017,3025,3032,3036,3063,3070,3074,3081,3085,3093,3100,3108,3124,3132,3148,3163,3179,3195,3218,3238,3250,3258,3266,3270,3278,3281,3289,3297,3300,3308,3311,3319,3327,3330,3338,3346,3354,3362,3370,3392,3400,3408,3416,3419,3427,3430,3438,3446,3449,3457,3465,3473,3481,3484,3492,3500,3508,3520,3528,3536,3544,3552,3560,3568,3584,3592,3600,3608,3616,3628,3640,3652,3664,3676,3688,3707,3715,3723,3731,3739,3747],{"_key":2208,"_type":8,"children":2209,"markDefs":2259,"style":30},"4b767b3ba22a",[2210,2214,2219,2223,2227,2231,2235,2239,2243,2247,2251,2255],{"_key":2211,"_type":12,"marks":2212,"text":2213},"6c1ccac22654",[],"Bu yazıda, dünya nüfusu verilerini ",{"_key":2215,"_type":12,"marks":2216,"text":2218},"4d28a29a45b4",[2217,18],"578de9b3f1a6","Worldometer",{"_key":2220,"_type":12,"marks":2221,"text":2222},"6d14b2e510a6",[]," üzerinden otomatik olarak çekip, ",{"_key":2224,"_type":12,"marks":2225,"text":2226},"8d1a06880e12",[18],"Elasticsearch’e",{"_key":2228,"_type":12,"marks":2229,"text":2230},"0a424017ae34",[]," kaydederek ",{"_key":2232,"_type":12,"marks":2233,"text":2234},"6dfa0fe7e543",[18],"Kibana",{"_key":2236,"_type":12,"marks":2237,"text":2238},"1e9cc0d6bd44",[]," ile görselleştirdiğim dashboardları web sitesine gömüp canlıya aldığım projemi detaylarıyla paylaşıyorum. Projeye Python ile başladım ancak projemi canlıya aldığımda ",{"_key":2240,"_type":12,"marks":2241,"text":2242},"89954dec30d0",[18],"Python’un inanılmaz kaynak tükettiğini farkettim ve Javascript’e geçtim fakat siz isterseniz pyrhon kodlarını da inceleyebilirsiniz.",{"_key":2244,"_type":12,"marks":2245,"text":2246},"da5d7b6813c3",[]," Kodları birebir ",{"_key":2248,"_type":12,"marks":2249,"text":2250},"78dd1857e893",[18],"GitHub",{"_key":2252,"_type":12,"marks":2253,"text":2254},"b250c7ec153c",[]," üzerinden inceleyebilir, sistemi kendi projelerine kolayca entegre edebilir ve ",{"_key":2256,"_type":12,"marks":2257,"text":2258},"0ef1b5761444",[18],"açık kaynak koda katkıda bulunabilirsiniz:",[2260],{"_key":2217,"_type":1302,"href":2261},"https://www.worldometers.info/",{"_key":2263,"_type":8,"children":2264,"markDefs":2291,"style":30},"02a610e3309d",[2265,2269,2274,2278,2283,2286],{"_key":2266,"_type":12,"marks":2267,"text":2268},"642187f287c3",[],"👉",{"_key":2270,"_type":12,"marks":2271,"text":2273},"4ca638f364f5",[2272,18],"ece193ba4a17","Kazıma İşlemleri İçin Tıklayın",{"_key":2275,"_type":12,"marks":2276,"text":2277},"c375f7ecab94",[],"\n👉",{"_key":2279,"_type":12,"marks":2280,"text":2282},"88d443713b64",[2281,18],"c034e55bc14c","Web Sitesi Kodları İçin Tıklayın",{"_key":2284,"_type":12,"marks":2285,"text":2277},"7521ce454e68",[],{"_key":2287,"_type":12,"marks":2288,"text":2290},"343d6fc4ca09",[2289,18],"32eb37746e2a","Benimle İletişim İçin Tıklayın",[2292,2294,2296],{"_key":2272,"_type":1302,"href":2293},"http://fehu-zone/population-scraper-node",{"_key":2281,"_type":1302,"href":2295},"https://github.com/fehu-zone/population-data-app",{"_key":2289,"_type":1302,"href":2297},"https://ahmetkaradas.site/contact",{"_key":2299,"_type":8,"children":2300,"markDefs":2305,"style":55},"1c0e9e07160a",[2301],{"_key":2302,"_type":12,"marks":2303,"text":2304},"c0ce7e0c5758",[],"Veri Kazıması İçin Kullandığım Teknolojiler",[],{"_key":2307,"_type":8,"children":2308,"markDefs":2313,"style":316},"c564e36d1553",[2309],{"_key":2310,"_type":12,"marks":2311,"text":2312},"d00f31100b7e",[],"1. Veri Kazıma (Scraping)",[],{"_key":2315,"_type":8,"children":2316,"level":356,"listItem":357,"markDefs":2332,"style":30},"01b8496bb38b",[2317,2321,2325,2329],{"_key":2318,"_type":12,"marks":2319,"text":2320},"221a09754487",[18],"Puppeteer (+ Stealth Plugin)",{"_key":2322,"_type":12,"marks":2323,"text":2324},"55dce4b9e1b7",[]," ile tarayıcı otomasyonu yapıldı. Anti-bot sistemlerini atlamak için ",{"_key":2326,"_type":12,"marks":2327,"text":2328},"5c39da1af407",[18],"headless tarayıcı davranışı insan benzeri hale getirildi",{"_key":2330,"_type":12,"marks":2331,"text":1299},"9af8d1cb963a",[],[],{"_key":2334,"_type":8,"children":2335,"level":356,"listItem":357,"markDefs":2344,"style":30},"a69e349ea29e",[2336,2340],{"_key":2337,"_type":12,"marks":2338,"text":2339},"af1b0b3eb66a",[18],"Adblocker",{"_key":2341,"_type":12,"marks":2342,"text":2343},"578a0dcb7e82",[]," eklentisi ile gereksiz istekler engellendi, performans artırıldı.",[],{"_key":2346,"_type":8,"children":2347,"level":356,"listItem":357,"markDefs":2364,"style":30},"3ea963ec00cd",[2348,2352,2356,2360],{"_key":2349,"_type":12,"marks":2350,"text":2351},"445f81f515a0",[18],"Cheerio",{"_key":2353,"_type":12,"marks":2354,"text":2355},"3a0e0b07ba2b",[]," ile statik HTML’ler parse edildi, ",{"_key":2357,"_type":12,"marks":2358,"text":2359},"2755cd681e46",[18],"Axios",{"_key":2361,"_type":12,"marks":2362,"text":2363},"8b973cbab681",[]," ile API/HTTP istekleri atıldı.",[],{"_key":2366,"_type":8,"children":2367,"level":356,"listItem":357,"markDefs":2376,"style":30},"0741903d0d20",[2368,2372],{"_key":2369,"_type":12,"marks":2370,"text":2371},"170b3bfe4e26",[18],"Axios-retry",{"_key":2373,"_type":12,"marks":2374,"text":2375},"78960d9740e0",[]," ile hatalı istekler otomatik yeniden denendi.",[],{"_key":2378,"_type":8,"children":2379,"level":356,"listItem":357,"markDefs":2388,"style":30},"744227b89217",[2380,2384],{"_key":2381,"_type":12,"marks":2382,"text":2383},"b9697aa4652e",[18],"Progress",{"_key":2385,"_type":12,"marks":2386,"text":2387},"b933ad966205",[]," kütüphanesiyle terminalde işlem durumu real-time gösterildi.",[],{"_key":2390,"_type":8,"children":2391,"markDefs":2396,"style":316},"ae3b56a7977f",[2392],{"_key":2393,"_type":12,"marks":2394,"text":2395},"b78409e1a28f",[],"2. Veri Depolama ve Sorgu",[],{"_key":2398,"_type":8,"children":2399,"level":356,"listItem":357,"markDefs":2412,"style":30},"4e0fe0e32ca7",[2400,2404,2408],{"_key":2401,"_type":12,"marks":2402,"text":2403},"3b817a7f85df",[],"Toplanan veriler ",{"_key":2405,"_type":12,"marks":2406,"text":2407},"97ce84ef947a",[18],"Elasticsearch",{"_key":2409,"_type":12,"marks":2410,"text":2411},"54c9299a770e",[],"’e indexlendi.",[],{"_key":2414,"_type":8,"children":2415,"level":356,"listItem":357,"markDefs":2424,"style":30},"31d99ac19e41",[2416,2420],{"_key":2417,"_type":12,"marks":2418,"text":2419},"a3dae786a642",[18],"LRU Cache",{"_key":2421,"_type":12,"marks":2422,"text":2423},"8ff8b69b2bd1",[]," ile sık erişilen veriler bellekte tutularak gereksiz istekler önlendi.",[],{"_key":2426,"_type":8,"children":2427,"markDefs":2432,"style":316},"ce2d4104c107",[2428],{"_key":2429,"_type":12,"marks":2430,"text":2431},"0930011aded3",[],"3. Görselleştirme ve Dağıtım",[],{"_key":2434,"_type":8,"children":2435,"level":356,"listItem":357,"markDefs":2443,"style":30},"09463068132f",[2436,2439],{"_key":2437,"_type":12,"marks":2438,"text":2234},"ca6f3388f8be",[18],{"_key":2440,"_type":12,"marks":2441,"text":2442},"09d3f6ec7589",[]," ile Elasticsearch’ten gelen veriler dashboard’a döküldü, analiz edildi.",[],{"_key":2445,"_type":8,"children":2446,"level":356,"listItem":357,"markDefs":2467,"style":30},"f692449bd750",[2447,2451,2455,2459,2463],{"_key":2448,"_type":12,"marks":2449,"text":2450},"febb322162a0",[],"Tüm sistem ",{"_key":2452,"_type":12,"marks":2453,"text":2454},"ce886ea8cda3",[18],"Docker",{"_key":2456,"_type":12,"marks":2457,"text":2458},"d41d0b54a11a",[]," ile containerize edilip ",{"_key":2460,"_type":12,"marks":2461,"text":2462},"aa75bd75b614",[18],"AWS EC2",{"_key":2464,"_type":12,"marks":2465,"text":2466},"13d2ccfbcfe8",[],"’ye deploy edildi.",[],{"_key":2469,"_type":8,"children":2470,"markDefs":2475,"style":30},"48022809b627",[2471],{"_key":2472,"_type":12,"marks":2473,"text":2474},"d82c733cc821",[18],"Neden Bu Teknolojileri tercih ettim?",[],{"_key":2477,"_type":8,"children":2478,"level":356,"listItem":357,"markDefs":2494,"style":30},"77a36da6c906",[2479,2483,2487,2491],{"_key":2480,"_type":12,"marks":2481,"text":2482},"599220e86a21",[18],"Puppeteer + Stealth",{"_key":2484,"_type":12,"marks":2485,"text":2486},"666c9fe2690a",[],": Dinamik içeriklerde ",{"_key":2488,"_type":12,"marks":2489,"text":2490},"ede0a7fc26a1",[18],"sürdürülebilir ve az kaynak kullanarak kazıma",{"_key":2492,"_type":12,"marks":2493,"text":1299},"36020d902a9b",[],[],{"_key":2496,"_type":8,"children":2497,"level":356,"listItem":357,"markDefs":2513,"style":30},"96a5d47ba1c5",[2498,2501,2505,2509],{"_key":2499,"_type":12,"marks":2500,"text":2407},"fef879504f04",[18],{"_key":2502,"_type":12,"marks":2503,"text":2504},"470c31e0398e",[],": Büyük veride ",{"_key":2506,"_type":12,"marks":2507,"text":2508},"10b4697adcdf",[18],"full-text search",{"_key":2510,"_type":12,"marks":2511,"text":2512},"09e5925d87fb",[]," ve hızlı sorgu.",[],{"_key":2515,"_type":8,"children":2516,"level":356,"listItem":357,"markDefs":2525,"style":30},"a043443f36c0",[2517,2521],{"_key":2518,"_type":12,"marks":2519,"text":2520},"31f402fa9056",[18],"Docker + EC2",{"_key":2522,"_type":12,"marks":2523,"text":2524},"390b592de08e",[],": Kolay scaling(ölçekleme) ve düşük maliyet.",[],{"_key":2527,"_type":8,"children":2528,"markDefs":2533,"style":55},"13f06cc018b0",[2529],{"_key":2530,"_type":12,"marks":2531,"text":2532},"c3f5cbdffd5d",[18],"Kazıma Sürecine Genel Bakış",[],{"_key":2535,"_type":1258,"asset":2536},"f94980b1fadc",{"_ref":2537,"_type":1261},"image-50c8ffa52d75750fc4470d4e10e0d89f5dc5ed97-1600x1200-webp",{"_key":2539,"_type":8,"children":2540,"markDefs":2546,"style":30},"cb4b190a56a8",[2541],{"_key":2542,"_type":12,"marks":2543,"text":2545},"727bf41d5761",[2544],"em","Mimari ve Katmanlar\n",[],{"_key":2548,"_type":8,"children":2549,"markDefs":2554,"style":55},"f2561969b0b8",[2550],{"_key":2551,"_type":12,"marks":2552,"text":2553},"120f23c77308",[],"1. Konfigürasyon: Ortam ve Yapılandırma",[],{"_key":2556,"_type":8,"children":2557,"markDefs":2562,"style":30},"5fcedac8c88a",[2558],{"_key":2559,"_type":12,"marks":2560,"text":2561},"965e7aa2018b",[],"Projenin yapılandırma ayarlarını (Elasticsearch ve Kibana bağlantı bilgileri, User-Agent(tarayıcı taklidi), Worldometer URL’leri vb.) çevresel değişkenlerden (dotenv) alıyoruz. Böylece, farklı ortamlarda esnek konfigürasyon yönetimi sağlanıyor.",[],{"_key":2564,"_type":140,"code":2565,"language":2566},"804ffdcd368e","import dotenv from \"dotenv\";\ndotenv.config();\n\nexport default {\n  ELASTICSEARCH_HOST: process.env.ELASTICSEARCH_HOST,\n  INDEX_NAME: process.env.INDEX_NAME,\n  ELASTIC_USERNAME: process.env.ELASTIC_USERNAME,\n  ELASTIC_PASSWORD: process.env.ELASTIC_PASSWORD,\n  REQUEST_HEADERS: {\n    \"User-Agent\":\n      process.env.USER_AGENT ||\n      \"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36\",\n  },\n  COUNTRIES_URL:\n    process.env.COUNTRIES_URL ||\n    \"https://www.worldometers.info/world-population/population-by-country/?t=\" +\n      Date.now(),\n  WORLD_URL:\n    process.env.WORLD_URL || \"https://www.worldometers.info/world-population/\",\n};","javascript",{"_key":2568,"_type":8,"children":2569,"markDefs":2574,"style":151},"cf4673917658",[2570],{"_key":2571,"_type":12,"marks":2572,"text":2573},"4929e3590eb8",[],"Bu yapı sayesinde; Elasticsearch host, indeks adı, kullanıcı adı, şifre gibi bilgileri .env dosyasından merkezi olarak yönetiyoruz. Güvenlik açısından gerek burada gerek repomda .env dosyamı paylaşamıyorum. Kendi kodunuza en uygun env dosyanızı rahatlıkla oluşturabilirsiniz",[],{"_key":2576,"_type":8,"children":2577,"markDefs":2582,"style":55},"17e03006ca1f",[2578],{"_key":2579,"_type":12,"marks":2580,"text":2581},"7694b2552393",[],"2. Elasticsearch Bağlantısı ve İndeks Yönetimi",[],{"_key":2584,"_type":8,"children":2585,"markDefs":2590,"style":30},"2242e1c0d00f",[2586],{"_key":2587,"_type":12,"marks":2588,"text":2589},"1d228871316b",[],"Elasticsearch’te verileri depolayabilmek için bir istemci oluşturuyoruz. Bu dosyada, Elasticsearch’ün indeksinin var olup olmadığını kontrol edip, yoksa dinamik olarak oluşturuyoruz. Ayrıca, “current” (güncel) snapshot’ları güncellemek için updateByQuery metodu kullanılıyor. Ek olarak, sürekli kazıma işlemi yapılan bu tarz projelerde sık karşılaşılan bir hata olan “Bu indeks zaten mevcut” hatasının önüne geçmiş oluyoruz.",[],{"_key":2592,"_type":140,"code":2593,"language":2566},"03f39cdbfb25","import { Client } from \"@elastic/elasticsearch\";\nimport config from \"../config/index.js\";\n\nconst client = new Client({\n  node: config.ELASTICSEARCH_HOST,\n  auth: {\n    username: config.ELASTIC_USERNAME,\n    password: config.ELASTIC_PASSWORD,\n  },\n  tls: {\n    rejectUnauthorized: false,\n  },\n});\n\nexport const initIndex = async () => {\n  try {\n    const indexExists = await client.indices.exists({\n      index: config.INDEX_NAME,\n    });\n\n    if (!indexExists) {\n      await client.indices.create({\n        index: config.INDEX_NAME,\n        body: {\n          mappings: {\n            dynamic: \"strict\",\n            properties: {\n              country: {\n                type: \"text\",\n                fields: {\n                  keyword: {\n                    type: \"keyword\",\n                    ignore_above: 256,\n                  },\n                },\n              },\n              country_code: { type: \"keyword\" },\n              continent: { type: \"keyword\" },\n              current_population: { type: \"long\" },\n              yearly_change: { type: \"float\" },\n              net_change: { type: \"integer\" },\n              migrants: { type: \"integer\" },\n              med_age: { type: \"float\" },\n              population_growth: { type: \"float\" },\n              \"@timestamp\": { type: \"date\" },\n              is_current: { type: \"boolean\" },\n              type: { type: \"keyword\" },\n            },\n          },\n        },\n      });\n      console.log(`Index \"${config.INDEX_NAME}\" oluşturuldu.`);\n    } else {\n      console.log(`Index \"${config.INDEX_NAME}\" zaten mevcut.`);\n    }\n\n    return { created: !indexExists };\n  } catch (error) {\n    console.error(\"Index işlemleri sırasında hata:\", error.message);\n    throw error;\n  }\n};\n\nexport const updateCurrentSnapshot = async (timestamp) => {\n  try {\n    // Eski current verileri false yap\n    await client.updateByQuery({\n      index: config.INDEX_NAME,\n      conflicts: \"proceed\",\n      refresh: true,\n      body: {\n        script: {\n          source: \"ctx._source.is_current = false\",\n          lang: \"painless\",\n        },\n        query: {\n          term: { is_current: true },\n        },\n      },\n    });\n\n    // Yeni verileri güncel (current) yap\n    await client.updateByQuery({\n      index: config.INDEX_NAME,\n      conflicts: \"proceed\",\n      refresh: true,\n      body: {\n        script: {\n          source: \"ctx._source.is_current = true\",\n          lang: \"painless\",\n        },\n        query: {\n          bool: {\n            must: [\n              { term: { \"@timestamp\": timestamp } },\n              { terms: { type: [\"world\", \"country\"] } },\n            ],\n          },\n        },\n      },\n    });\n\n    console.log(`Güncel snapshot güncellendi: ${timestamp}`);\n  } catch (error) {\n    console.error(\"Snapshot güncelleme hatası:\", error.message);\n    throw error;\n  }\n};\n\nexport { client };",{"_key":2595,"_type":8,"children":2596,"markDefs":2601,"style":151},"98291b549a11",[2597],{"_key":2598,"_type":12,"marks":2599,"text":2600},"01a38ada92c3",[],"Bu kod sayesinde, Elasticsearch ortamında dinamik veri modellemesi ve snapshot güncellemeleri yapılabilmekte.",[],{"_key":2603,"_type":8,"children":2604,"markDefs":2609,"style":55},"580b6e2615d7",[2605],{"_key":2606,"_type":12,"marks":2607,"text":2608},"be79818173cb",[],"3. Ülke Verilerini Dinamik Olarak Kazıma",[],{"_key":2611,"_type":8,"children":2612,"markDefs":2617,"style":30},"ecc12a72c03c",[2613],{"_key":2614,"_type":12,"marks":2615,"text":2616},"c0c78d5b87dd",[],"Puppeteer-extra (stealth özellikli) kullanılarak Worldometer’da ülke bazlı nüfus verileri çekiliyor. Sayfa tamamen yüklendikten sonra, tablo içerisindeki tüm satırlar için veri ayrıştırılması yapılmaktadır. Puppeteer-extra kullanmadan da gayet sağlıklı kazıma işlemi yaptım ancak fazladan önlem almak bize bir şey kaybettirmez.",[],{"_key":2619,"_type":140,"code":2620,"language":2566},"8abddd570c68","import puppeteer from \"puppeteer-extra\";\nimport StealthPlugin from \"puppeteer-extra-plugin-stealth\";\nimport { parseNumber, cleanCountryName } from \"./utils.js\";\nimport config from \"../config/index.js\";\n\npuppeteer.use(StealthPlugin());\n\nexport const fetchCountryDataDynamic = async () => {\n  let browser;\n  let page;\n\n  try {\n    // Tarayıcı başlatma\n    browser = await puppeteer.launch({\n      headless: \"new\",\n      args: [\n        \"--no-sandbox\",\n        \"--disable-setuid-sandbox\",\n        \"--disable-dev-shm-usage\",\n        \"--disable-features=site-per-process\",\n        \"--lang=en-US\",\n        \"--window-size=1920,3000\",\n      ],\n    });\n\n    page = await browser.newPage();\n    await page.setViewport({ width: 1920, height: 3000 });\n\n    // Kullanıcı ajanı ayarı\n    await page.setUserAgent(config.REQUEST_HEADERS[\"User-Agent\"]);\n    await page.setJavaScriptEnabled(true);\n    await page.setDefaultNavigationTimeout(120000);\n\n    // Sayfa yükleme\n    console.log(\"Sayfa yükleniyor:\", config.COUNTRIES_URL);\n    await page.goto(config.COUNTRIES_URL, {\n      waitUntil: \"networkidle2\",\n      timeout: 120000,\n    });\n\n    // Tablonun doğru yüklenmesi için bekleme\n    await page.waitForFunction(\n      () => {\n        const potentialTables = Array.from(document.querySelectorAll(\"table\"));\n        return potentialTables.some((table) => {\n          const headers = Array.from(table.querySelectorAll(\"th\"));\n          return headers.some((th) => th.textContent.includes(\"Population\"));\n        });\n      },\n      { timeout: 45000 }\n    );\n\n    // Tablo verilerinin çekilmesi\n    const tableData = await page.evaluate(() => {\n      const tables = Array.from(document.querySelectorAll(\"table\"));\n      const targetTable = tables.find(\n        (table) =>\n          table.textContent.includes(\"Country\") &&\n          table.textContent.includes(\"Population\")\n      );\n\n      return Array.from(targetTable.querySelectorAll(\"tbody tr\")).map((row) => {\n        const cells = Array.from(row.querySelectorAll(\"td\"));\n        return cells.map((cell) =>\n          cell.textContent\n            .replace(/\\u00a0/g, \" \") // Özel boşluk karakterlerini temizle\n            .trim()\n        );\n      });\n    });\n\n    // Verilerin işlenmesi\n    const processedData = tableData\n      .map((row) => ({\n        rank: parseNumber(row[0]),\n        country: cleanCountryName(row[1]),\n        current_population: parseNumber(row[2]),\n        yearly_change: parseNumber(row[3], true),\n        net_change: parseNumber(row[4]),\n        migrants: parseNumber(row[7]),\n        med_age: parseNumber(row[9]),\n      }))\n      .filter((item) => item.rank > 0);\n\n    return processedData;\n  } catch (error) {\n    console.error(\"Son hata:\", error);\n    if (page) {\n      await page.screenshot({\n        path: `final-error-${Date.now()}.png`,\n        fullPage: true,\n      });\n    }\n    return null;\n  } finally {\n    if (browser) await browser.close();\n  }\n};\n",{"_key":2622,"_type":8,"children":2623,"markDefs":2628,"style":55},"51dfe0e51c28",[2624],{"_key":2625,"_type":12,"marks":2626,"text":2627},"9d280a3e003a",[],"4. Statik HTML Üzerinden Dünya Verilerini Kazıma",[],{"_key":2630,"_type":8,"children":2631,"markDefs":2636,"style":30},"f703ea2fafb0",[2632],{"_key":2633,"_type":12,"marks":2634,"text":2635},"69fa2678b7a8",[],"Bu yöntemde, Worldometer’ın ana sayfasından Axios ile HTML verisi çekilip, Cheerio kullanılarak ayrıştırma yapılıyor. Verilerin çekileceği alanlarda ilgili rel değerleri kullanılarak sayı değerleri elde ediliyor. Aşağıdaki kod parçası, statik yöntemle dünya nüfus verisini çekip ayrıştırmanın nasıl yapıldığını gösteriyor:",[],{"_key":2638,"_type":140,"code":2639,"language":2566},"817a1b598ac9","import axios from \"axios\";\nimport * as cheerio from \"cheerio\";\nimport config from \"../config/index.js\";\nimport { parseNumber } from \"./utils.js\";\n\nexport const fetchWorldData = async () => {\n  try {\n    const { data } = await axios.get(config.WORLD_URL, {\n      headers: config.REQUEST_HEADERS,\n      timeout: 15000,\n    });\n\n    const $ = cheerio.load(data);\n\n    const extractValue = (relAttr) => {\n      const element = $(`span[rel=\"${relAttr}\"]`);\n      if (!element.length) return null;\n\n      return parseNumber(\n        element\n          .find(\".rts-nr-int\")\n          .toArray()\n          .map((el) => $(el).text().trim())\n          .join(\"\")\n      );\n    };\n\n    const result = {\n      current_population: extractValue(\"current_population\"),\n      births_today: extractValue(\"births_today\"),\n      // Günlük ölüm verisini \"dth1s_today\" anahtarıyla çekiyoruz.\n      dth1s_today: extractValue(\"dth1s_today\"),\n      population_growth: extractValue(\"absolute_growth\"),\n      \"@timestamp\": new Date().toISOString(),\n    };\n\n    if (Object.values(result).some((v) => v === null || Number.isNaN(v))) {\n      throw new Error(\"Eksik veya geçersiz dünya verileri\");\n    }\n\n    return result;\n  } catch (error) {\n    console.error(\"Dünya veri hatası:\", error.message);\n    return null;\n  }\n};",{"_key":2641,"_type":8,"children":2642,"markDefs":2654,"style":151},"75367fd730be",[2643,2647,2650],{"_key":2644,"_type":12,"marks":2645,"text":2646},"236d584db683",[18,2544],"Not:",{"_key":2648,"_type":12,"marks":2649,"text":1290},"28ee0ceb5cde",[],{"_key":2651,"_type":12,"marks":2652,"text":2653},"84f82875e3d4",[2544],"Bu yöntemde, HTML içeriği üzerinden doğrudan veri kazıyarak hızlı ve basit bir yapı elde edilmiş oluyor. Ancak bazı durumlarda, sayfa dinamik içerik sunduğu için eksik veri alınabilir. Buna karşı dinamik verileri çekmek için yazdığım kodları aşağıda paylaşacağım",[],{"_key":2656,"_type":8,"children":2657,"markDefs":2662,"style":55},"fddfde23ab93",[2658],{"_key":2659,"_type":12,"marks":2660,"text":2661},"c795085f0ce0",[],"5. Dünya Verilerini Dinamik Kazıma",[],{"_key":2664,"_type":8,"children":2665,"markDefs":2670,"style":30},"4858b221011a",[2666],{"_key":2667,"_type":12,"marks":2668,"text":2669},"14c4efc809d5",[],"Dinamik veri çekimi yönteminde ise Puppeteer kullanılarak tarayıcı başlatılıyor ve sayfada çalıştırılan JavaScript ile veriler elde ediliyor. Bu yöntem, statik HTML’de sunulmayan veya güncellenmeyen veriler için daha güvenilir sonuçlar verir.",[],{"_key":2672,"_type":140,"code":2673,"language":2566},"0c7690daec8f","import puppeteer from \"puppeteer\";\nimport config from \"../config/index.js\";\nimport { parseNumber } from \"./utils.js\";\n\nexport const fetchWorldDataDynamic = async () => {\n  let browser;\n  try {\n    browser = await puppeteer.launch({\n      headless: \"new\",\n      ignoreHTTPSErrors: true,\n      args: [\n        \"--no-sandbox\",\n        \"--disable-setuid-sandbox\",\n        \"--disable-dev-shm-usage\",\n      ],\n    });\n\n    const page = await browser.newPage();\n    await page.setUserAgent(config.REQUEST_HEADERS[\"User-Agent\"]);\n    await page.setDefaultNavigationTimeout(30000);\n\n    await page.goto(config.WORLD_URL, {\n      waitUntil: \"networkidle2\",\n      timeout: 30000,\n    });\n\n    const result = await page.evaluate(() => {\n      const getValue = (rel) => {\n        const el = document.querySelector(`[rel='${rel}']`);\n        return el\n          ? Array.from(el.querySelectorAll(\".rts-nr-int\"))\n              .map((e) => e.textContent.trim())\n              .join(\"\")\n          : \"\";\n      };\n\n      return {\n        current_population: getValue(\"current_population\"),\n        births_today: getValue(\"births_today\"),\n        // Anahtar adını, site ile uyumlu olacak şekilde \"dth1s_today\" olarak ayarlıyoruz.\n        dth1s_today: getValue(\"dth1s_today\"),\n        population_growth: getValue(\"absolute_growth\"),\n        \"@timestamp\": new Date().toISOString(),\n      };\n    });\n\n    return {\n      current_population: parseNumber(result.current_population),\n      births_today: parseNumber(result.births_today),\n      dth1s_today: parseNumber(result.dth1s_today),\n      population_growth: parseNumber(result.population_growth),\n      \"@timestamp\": result[\"@timestamp\"],\n    };\n  } catch (error) {\n    console.error(\"Dünya veri hatası:\", error);\n    return null;\n  } finally {\n    if (browser) await browser.close();\n  }\n};\n",{"_key":2675,"_type":8,"children":2676,"markDefs":2687,"style":151},"0339805e0a3e",[2677,2680,2683],{"_key":2678,"_type":12,"marks":2679,"text":2646},"d0cca3e1c308",[18,2544],{"_key":2681,"_type":12,"marks":2682,"text":1290},"72c6db28e38c",[],{"_key":2684,"_type":12,"marks":2685,"text":2686},"7f2170ca8061",[2544],"Dinamik kazıma yöntemi, özellikle JavaScript tarafından oluşturulan içerikleri çekmekte çok daha etkin olduğu için, sayfa güncellemelerine daha iyi ayak uydurur ve bu sayede daha güvenilir sonuçlar elde ederiz. Fakat bu yöntem statik yönteme göre daha uzun sürer ve daha çok kaynak tüketir.",[],{"_key":2689,"_type":8,"children":2690,"markDefs":2695,"style":316},"0fe9b324e8c2",[2691],{"_key":2692,"_type":12,"marks":2693,"text":2694},"a4775e3ff686",[],"Fallback Mantığının Uygulanması",[],{"_key":2697,"_type":8,"children":2698,"markDefs":2703,"style":30},"50be98a47877",[2699],{"_key":2700,"_type":12,"marks":2701,"text":2702},"f9c557e26456",[],"Projeme ilk başladığımda dünya bazlı nüfus verilerini çekerken sık karşılaştığım hatalardan birisi ise “null dönen” verilerdi. Statik olarak verileri almak istedim ancak Worldometerin yapısından dolayı bu her zaman mümkün olmuyordu. Puppeteer kullandım ve dinamik kazıma yapısını koduma entegre ettim. Fallback mekanizmasını kurdum",[],{"_key":2705,"_type":8,"children":2706,"markDefs":2711,"style":120},"7397d74d97c5",[2707],{"_key":2708,"_type":12,"marks":2709,"text":2710},"55118da7480b",[],"Geliştirdiğim fallback mekanizması sayesinde, eğer dinamik veri çekiminde bir hata oluşursa, otomatik olarak statik veri çekme yöntemi devreye girecek, böylece verilerin sürekliliği sağlanacaktır.",[],{"_key":2713,"_type":8,"children":2714,"markDefs":2719,"style":55},"8de2548731d2",[2715],{"_key":2716,"_type":12,"marks":2717,"text":2718},"b7aedf84d8eb",[],"6. Yardımcı Fonksiyonlar",[],{"_key":2721,"_type":8,"children":2722,"markDefs":2727,"style":30},"c4f0fbf564a3",[2723],{"_key":2724,"_type":12,"marks":2725,"text":2726},"01b02b835200",[],"İki temel yardımcı fonksiyon — sayısal verileri parse etmek ve ülke isimlerini temizlemek — aşağıdaki kodlarda yer almaktadır.. Ek olarak, toplu indexleme (bulkIndexCountries) fonksiyonu da Elasticsearch işlemleri için bulunuyor.",[],{"_key":2729,"_type":140,"code":2730,"language":2566},"4fa6cfc33336","import { client } from \"../elastic/client.js\";\nimport config from \"../config/index.js\";\n\nexport const parseNumber = (str, isPercentage = false) => {\n  if ([null, undefined, \"\"].includes(str)) return 0; // Null değerler için 0\n\n  const cleaned = String(str)\n    .replace(/[^\\d.-]/g, \"\")\n    .replace(/^\\-/g, \"-\");\n\n  const number = parseFloat(cleaned);\n  return Number.isNaN(number) ? 0 : number; // NaN durumunda 0\n};\n\nexport const cleanCountryName = (name) => {\n  const COUNTRY_NAME_MAPPING = {\n    /* ... */\n  };\n\n  return (\n    COUNTRY_NAME_MAPPING[name] ||\n    name\n      .replace(/\\[.*?\\]/g, \"\")\n      .replace(/\\(.*?\\)/g, \"\")\n      .trim()\n  );\n};\n\nexport const bulkIndexCountries = async (countries) => {\n  try {\n    // EKSİK PARANTEZ DÜZELTİLDİ\n    if (!Array.isArray(countries)) {\n      throw new Error(\"Geçersiz ülke veri formatı\");\n    }\n\n    const { body: updateResponse } = await client.updateByQuery({\n      /* ... */\n    });\n\n    const body = countries.flatMap((country) => [\n      /* ... */\n    ]);\n\n    const { body: bulkResponse } = await client.bulk({\n      /* ... */\n    });\n\n    return {\n      /* ... */\n    };\n  } catch (error) {\n    return {\n      /* ... */\n    };\n  }\n};",{"_key":2732,"_type":8,"children":2733,"markDefs":2738,"style":55},"05330bc0d429",[2734],{"_key":2735,"_type":12,"marks":2736,"text":2737},"42407f3555f5",[],"7. Ana İşlem Akışı: main.js",[],{"_key":2740,"_type":8,"children":2741,"markDefs":2746,"style":30},"142eca9ca782",[2742],{"_key":2743,"_type":12,"marks":2744,"text":2745},"ec31433198ad",[],"Bu ana dosya, projenin merkez üssü diyebiliriz. Veri kazıma işlemlerini koordine etmekle kalmaz; aynı zamanda verilerin doğruluğunu denetler, Elasticsearch’e gönderimini sağlar, snapshot’ları günceller ve sistem kaynaklarını izleyerek hangi kazıma yönteminin tercih edilmesi gerektiğine karar verir. Yani, hem teknik akışı hem de verimliliği yöneten bir kontrol paneli gibi çalışır.",[],{"_key":2748,"_type":140,"code":2749,"language":2566},"d17b2d42b6d8","process.env.NODE_TLS_REJECT_UNAUTHORIZED = \"0\";\nimport dotenv from \"dotenv\";\ndotenv.config();\n\n// .env dosyasından bilgileri alıyoruz.\n// Eğer ELASTICSEARCH_HOST tanımlı değilse, varsayılan olarak yerel sunucuyu kullan.\nconst ELASTICSEARCH_HOST =\n  process.env.ELASTICSEARCH_HOST || \"http://localhost:9200/\";\n\nimport { fetchCountryDataDynamic } from \"./scraper/countryDataDynamic.js\";\nimport { fetchWorldDataDynamic } from \"./scraper/worldDataDynamic.js\";\nimport { initIndex, client } from \"./elastic/client.js\";\nimport ProgressBar from \"progress\";\nimport { updateCurrentSnapshot } from \"./elastic/client.js\";\n\n// Gelişmiş Loglama Sistemi\nconst logger = {\n  info: (message) =>\n    console.log(\n      `\\x1b[36mℹ️ [${new Date().toLocaleTimeString()}] ${message}\\x1b[0m`\n    ),\n  success: (message) =>\n    console.log(\n      `\\x1b[32m✅ [${new Date().toLocaleTimeString()}] ${message}\\x1b[0m`\n    ),\n  error: (message) =>\n    console.log(\n      `\\x1b[31m❌ [${new Date().toLocaleTimeString()}] ${message}\\x1b[0m`\n    ),\n  warn: (message) =>\n    console.log(\n      `\\x1b[33m⚠️ [${new Date().toLocaleTimeString()}] ${message}\\x1b[0m`\n    ),\n};\n\n// Geliştirilmiş Veri Doğrulama\nconst validateData = (worldData, countryData) => {\n  const warnings = [];\n  const errors = [];\n  const EXPECTED_COUNTRIES = 235;\n\n  // Dünya verisi kontrolleri\n  if (!worldData?.current_population) {\n    errors.push(\"Dünya nüfus verisi eksik\");\n  }\n\n  // Ülke verisi kontrolleri\n  if (!countryData || countryData.length === 0) {\n    errors.push(\"Hiç ülke verisi alınamadı\");\n    return { isValid: false, errors, warnings };\n  }\n\n  const totalCountries = countryData.length;\n  const validCountries = countryData.filter(\n    (c) =>\n      c.current_population > 0 && !isNaN(c.yearly_change) && !isNaN(c.med_age)\n  ).length;\n\n  // Uyarılar\n  if (totalCountries \u003C EXPECTED_COUNTRIES) {\n    warnings.push(`Eksik ülke: ${EXPECTED_COUNTRIES - totalCountries}`);\n  }\n\n  const criticalMissing = [\"China\", \"India\", \"United States\"].filter(\n    (c) => !countryData.some((d) => d.country === c)\n  );\n\n  if (criticalMissing.length > 0) {\n    warnings.push(`Eksik kritik ülkeler: ${criticalMissing.join(\", \")}`);\n  }\n\n  if (totalCountries - validCountries > 0) {\n    warnings.push(\n      `Geçersiz veri içeren ülkeler: ${totalCountries - validCountries}`\n    );\n  }\n\n  // Hatalar\n  if (validCountries === 0) {\n    errors.push(\"Hiç geçerli ülke verisi yok\");\n  }\n\n  return {\n    isValid: errors.length === 0,\n    errors,\n    warnings,\n  };\n};\n\n// Enerji Tüketimi Ölçüm Fonksiyonu\nconst measureEnergyConsumption = async (fn, label = \"İşlem\") => {\n  const startTime = process.hrtime();\n  const startCpuUsage = process.cpuUsage();\n\n  try {\n    const result = await fn();\n\n    const elapsedTime = process.hrtime(startTime);\n    const elapsedCpu = process.cpuUsage(startCpuUsage);\n    const cpuSeconds = (elapsedCpu.user + elapsedCpu.system) / 1e6;\n    const wallSeconds = elapsedTime[0] + elapsedTime[1] / 1e9;\n    const cpuWattage = 50;\n    const estimatedEnergyJoules = cpuSeconds * cpuWattage;\n\n    logger.info(`\\n== ${label} Enerji Tüketim Raporu ==`);\n    logger.info(`Duvar saati süresi: ${wallSeconds.toFixed(3)} s`);\n    logger.info(`CPU kullanım süresi: ${cpuSeconds.toFixed(3)} s`);\n    logger.info(\n      `Tahmini enerji tüketimi: ${estimatedEnergyJoules.toFixed(\n        2\n      )} J (ortalama ${cpuWattage}W kabul edilerek)`\n    );\n    return result;\n  } catch (error) {\n    throw error;\n  }\n};\n\n// Ana İşlem Akışı\nconst processData = async () => {\n  try {\n    logger.info(\"Scraping süreci başlatılıyor...\");\n\n    // Elasticsearch hazırlığı\n    await initIndex();\n\n    // 1. Dünya verilerini çek\n    logger.info(\"════════════ DÜNYA VERİLERİ ÇEKİLİYOR ════════════\");\n    const worldData = await fetchWithProgress(\n      fetchWorldDataDynamic,\n      \"🌍 Dünya verisi\",\n      15,\n      120000\n    );\n\n    // 2. Bekleme süresi\n    logger.info(\"Dünya verisi alındıktan sonra 20 saniye bekleniyor...\");\n    await delay(20000);\n\n    // 3. Ülke verilerini çek\n    logger.info(\"════════════ ÜLKE VERİLERİ ÇEKİLİYOR ════════════\");\n    const countryData = await fetchWithProgress(\n      fetchCountryDataDynamic,\n      \"🌐 Ülke verisi\",\n      30,\n      240000\n    );\n\n    // Sonuçları işle\n    const results = { world: worldData, country: countryData };\n    logResults(results);\n\n    // Validasyon\n    const validation = validateData(results.world, results.country);\n    handleValidation(validation);\n\n    // Elasticsearch'e gönder\n    const { successCount, errorCount } = await sendToElastic(results);\n\n    logger.success(`Başarıyla kaydedildi: ${successCount} kayıt`);\n    if (errorCount > 0) {\n      logger.warn(`Başarısız kayıtlar: ${errorCount}`);\n    }\n\n    // Snapshot güncelleme\n    await updateCurrentSnapshot(new Date().toISOString());\n  } catch (error) {\n    logger.error(`Kritik Hata: ${error.message}`);\n    logger.info(\"5 dakika sonra yeniden denenecek...\");\n    setTimeout(() => processDataWithEnergy(), 300000);\n  }\n};\n\n// Enerji ölçümü dahil ana işlem çağrısı\nconst processDataWithEnergy = async () => {\n  await measureEnergyConsumption(processData, \"processData\");\n};\n\n// Yardımcı Fonksiyonlar\nconst fetchWithProgress = async (fetchFn, label, total, timeout) => {\n  const bar = new ProgressBar(`${label} [:bar] :percent :etas`, {\n    complete: \"=\",\n    incomplete: \" \",\n    width: 30,\n    total,\n  });\n\n  const timer = setInterval(() => bar.tick(), 1000);\n\n  try {\n    const result = await Promise.race([\n      fetchFn(),\n      new Promise((_, reject) =>\n        setTimeout(() => reject(new Error(`${label} zaman aşımı`)), timeout)\n      ),\n    ]);\n\n    clearInterval(timer);\n    bar.update(1);\n    return result;\n  } catch (error) {\n    clearInterval(timer);\n    throw error;\n  }\n};\n\nconst logResults = (results) => {\n  logger.info(\"════════════ DÜNYA VERİLERİ ════════════\");\n  if (results.world) {\n    logger.info(\n      `🌍 Nüfus: ${results.world.current_population?.toLocaleString()}`\n    );\n    logger.info(\n      `📈 Günlük Büyüme: ${results.world.population_growth?.toLocaleString()}`\n    );\n    logger.info(`⏳ Zaman Damgası: ${results.world[\"@timestamp\"]}`);\n  } else {\n    logger.error(\"Dünya verisi yok\");\n  }\n\n  logger.info(\"════════════ ÜLKE VERİLERİ ════════════\");\n  if (results.country?.length > 0) {\n    logger.info(`✅ Toplam Ülke: ${results.country.length}`);\n    logger.info(\n      `🏆 İlk 3 Ülke: ${results.country\n        .slice(0, 3)\n        .map((c) => c.country)\n        .join(\", \")}`\n    );\n    logger.info(`📊 Ortalama Yaş: ${calculateAverageAge(results.country)}`);\n  } else {\n    logger.error(\"Ülke verisi yok\");\n  }\n};\n\nconst handleValidation = ({ isValid, errors, warnings }) => {\n  if (!isValid) {\n    logger.error(\"Validasyon Hataları:\");\n    errors.forEach((e) => logger.error(`❌ ${e}`));\n    throw new Error(\"Kritik validasyon hataları\");\n  }\n\n  if (warnings.length > 0) {\n    logger.warn(\"Validasyon Uyarıları:\");\n    warnings.forEach((w) => logger.warn(`⚠️  ${w}`));\n  }\n};\n\nconst sendToElastic = async ({ world, country }) => {\n  const body = [];\n\n  try {\n    // Dünya verisini ekle\n    if (world) {\n      body.push(\n        { index: { _index: process.env.INDEX_NAME } },\n        {\n          ...world,\n          type: \"world\",\n          is_current: true,\n          \"@timestamp\": new Date().toISOString(),\n        }\n      );\n    }\n\n    // Ülke verilerini ekle\n    if (country?.length > 0) {\n      country.forEach((c) => {\n        body.push(\n          { index: { _index: process.env.INDEX_NAME } },\n          {\n            ...c,\n            type: \"country\",\n            is_current: true,\n            \"@timestamp\": new Date().toISOString(),\n            current_population: c.current_population || 0,\n            yearly_change: c.yearly_change || 0,\n            net_change: c.net_change || 0,\n            migrants: c.migrants || 0,\n            med_age: c.med_age || 0,\n          }\n        );\n      });\n    }\n\n    if (body.length === 0) {\n      logger.warn(\"Gönderilecek veri yok\");\n      return { successCount: 0, errorCount: 0 };\n    }\n\n    const { body: response } = await client.bulk({\n      refresh: \"wait_for\",\n      body,\n    });\n\n    let successCount = 0;\n    let errorCount = 0;\n    const errors = [];\n\n    if (response?.items) {\n      response.items.forEach((item, index) => {\n        if (item.index.error) {\n          errorCount++;\n          errors.push({\n            document: body[index * 2 + 1],\n            reason: item.index.error.reason,\n          });\n        } else {\n          successCount++;\n        }\n      });\n    }\n\n    if (errorCount > 0) {\n      logger.error(`İlk 3 hata detayı:`);\n      errors.slice(0, 3).forEach((err, i) => {\n        logger.error(`${i + 1}. Hata: ${err.reason}`);\n        logger.error(`Belge: ${JSON.stringify(err.document)}`);\n      });\n    }\n\n    return { successCount, errorCount };\n  } catch (error) {\n    logger.error(\"Elasticsearch hatası:\");\n    if (error.meta) {\n      logger.error(`Hata detayı: ${JSON.stringify(error.meta.body.error)}`);\n    } else {\n      logger.error(error.stack);\n    }\n    throw error;\n  }\n};\n\nconst calculateAverageAge = (countries) => {\n  const validAges = countries\n    .map((c) => c.med_age)\n    .filter((age) => age > 0 && age \u003C 100);\n\n  return validAges.length > 0\n    ? (validAges.reduce((sum, age) => sum + age, 0) / validAges.length).toFixed(\n        1\n      )\n    : \"N/A\";\n};\n\nconst delay = (ms) => new Promise((resolve) => setTimeout(resolve, ms));\n\nconsole.clear();\nprocessDataWithEnergy();\nsetInterval(processDataWithEnergy, 1800000); // Her 30 dakikada bir çalıştır.",{"_key":2751,"_type":8,"children":2752,"markDefs":2757,"style":151},"ff30a5e55f69",[2753],{"_key":2754,"_type":12,"marks":2755,"text":2756},"5197ffa99bb7",[2544],"Kodlarda olası bir sorun yaşamanıza karşılık soruna daha hızlı müdahale edebilmeniz için hata ile alakalı size ekran görüntüsü gelecektir.",[],{"_key":2759,"_type":8,"children":2760,"markDefs":2764,"style":30},"236545045018",[2761],{"_key":2762,"_type":12,"marks":2763,"text":158},"501236d1a921",[],[],{"_key":2766,"_type":8,"children":2767,"markDefs":2772,"style":55},"112f35d604b8",[2768],{"_key":2769,"_type":12,"marks":2770,"text":2771},"d38f1fa6d848",[18],"Projenizi İnsanlara Sunmanın En İyi Yolu: Web Sitesi",[],{"_key":2774,"_type":8,"children":2775,"markDefs":2800,"style":30},"6030670a8898",[2776,2780,2784,2788,2792,2796],{"_key":2777,"_type":12,"marks":2778,"text":2779},"74641e4f2f9d",[18],"Kibana’da",{"_key":2781,"_type":12,"marks":2782,"text":2783},"f382a47e4143",[]," oluşturduğum gösterge panoları gerçekten hoşuma gitmişti. Ancak yerelde (local) çalışırken, bu etkileyici görselleştirmeleri insanlarla dilediğim gibi paylaşamıyordum. Bu nedenle işe ",{"_key":2785,"_type":12,"marks":2786,"text":2787},"78942b3c82d8",[18],"Figma’da",{"_key":2789,"_type":12,"marks":2790,"text":2791},"7ed53b23041c",[]," bir web sitesi tasarlayarak başladım. Tasarımın ardından ",{"_key":2793,"_type":12,"marks":2794,"text":2795},"0297365f6cd6",[18],"Vue.js",{"_key":2797,"_type":12,"marks":2798,"text":2799},"f609532da71c",[]," ile bu tasarımı hayata geçirdim ve siteyi tamamen etkileşimli bir hale getirdim. Projeyi yavaş yavaş canlıya alma fikri de tam olarak burada tomurcuklandı.",[],{"_key":2802,"_type":8,"children":2803,"markDefs":2816,"style":30},"9ab36a0b8f1f",[2804,2808,2812],{"_key":2805,"_type":12,"marks":2806,"text":2807},"f1f605055baf",[],"Web sitem ve veri kazıma işlemleri, ",{"_key":2809,"_type":12,"marks":2810,"text":2811},"be0f6fbb0c7b",[18],"AWS",{"_key":2813,"_type":12,"marks":2814,"text":2815},"43f580ff9d21",[]," üzerinde çalışan bir sunucu sayesinde kesintisiz şekilde çalışıyor. Yukarıda bahsettiğim “Kazıma Sürecine Genel Bakış” başlığı ve aşağıya koyacağım web sitesi-kibana etkileşimi diagramını tekrar inceleyerek süreci daha iyi anlayabilirsiniz.",[],{"_key":2818,"_type":8,"children":2819,"markDefs":2824,"style":30},"2f8011200266",[2820],{"_key":2821,"_type":12,"marks":2822,"text":2823},"b21651c7f239",[],"Veri kaynağından kullanıcıya kadar olan akışı ve Vue ile Kibana’nın nasıl bir arada çalıştığını sade bir şekilde gözler önüne seriyor. 👇",[],{"_key":2826,"_type":8,"children":2827,"markDefs":2831,"style":30},"25e7498f9939",[2828],{"_key":2829,"_type":12,"marks":2830,"text":158},"8e537c92316f",[],[],{"_key":2833,"_type":1258,"asset":2834},"a52bcaef215b",{"_ref":2835,"_type":1261},"image-5f4f4c6bf8be17dad679a70864b8c2f99408e4ff-2400x1350-webp",{"_key":2837,"_type":8,"children":2838,"markDefs":2843,"style":151},"55f3ed246fad",[2839],{"_key":2840,"_type":12,"marks":2841,"text":2842},"e27eaf4bd65d",[],"Web sitesinin yayında olduğu ve kazıma işlemlerinin yapıldığı yer AWS sunucusudur. “Kazıma Sürecine Genel Bakış” başlığına giderek web sitesi ve Kibana arasındaki etkileşimi daha iyi anlayabilirsiniz.",[],{"_key":2845,"_type":8,"children":2846,"markDefs":2850,"style":30},"4d6dbd9bcb47",[2847],{"_key":2848,"_type":12,"marks":2849,"text":158},"6767a90973c2",[],[],{"_key":2852,"_type":8,"children":2853,"markDefs":2858,"style":55},"45dfdd2ad2cc",[2854],{"_key":2855,"_type":12,"marks":2856,"text":2857},"a0c782bafe4d",[],"Web Site Entegrasyonu ve Teknolojiler",[],{"_key":2860,"_type":8,"children":2861,"markDefs":2866,"style":30},"6c9ebac7d3cf",[2862],{"_key":2863,"_type":12,"marks":2864,"text":2865},"a2f40362d591",[],"Web sitemi oluştururken:",[],{"_key":2868,"_type":8,"children":2869,"level":356,"listItem":357,"markDefs":2886,"style":30},"9597bb4dc17a",[2870,2874,2878,2882],{"_key":2871,"_type":12,"marks":2872,"text":2873},"b44efad09fca",[18],"Vue 3",{"_key":2875,"_type":12,"marks":2876,"text":2877},"e53e9dfcfc20",[]," + ",{"_key":2879,"_type":12,"marks":2880,"text":2881},"7e581e94bc43",[18],"Vite",{"_key":2883,"_type":12,"marks":2884,"text":2885},"507abbe80d77",[]," altyapısını tercih ettim.",[],{"_key":2888,"_type":8,"children":2889,"level":356,"listItem":357,"markDefs":2909,"style":30},"cc7e31f31226",[2890,2894,2898,2901,2905],{"_key":2891,"_type":12,"marks":2892,"text":2893},"49183345d475",[],"Birim ve entegrasyon testlerini ",{"_key":2895,"_type":12,"marks":2896,"text":2897},"dbec88fe602e",[18],"Vitest",{"_key":2899,"_type":12,"marks":2900,"text":519},"d768ea38b519",[],{"_key":2902,"_type":12,"marks":2903,"text":2904},"271891cfcbb3",[18],"Cypress",{"_key":2906,"_type":12,"marks":2907,"text":2908},"4b96e4caf90f",[]," ile yazdım.",[],{"_key":2911,"_type":8,"children":2912,"level":356,"listItem":357,"markDefs":2917,"style":30},"ded0614e2266",[2913],{"_key":2914,"_type":12,"marks":2915,"text":2916},"e77cad98ef06",[],"Temel SEO ayarlarını (meta başlık, açıklama, Open Graph) sağladım.",[],{"_key":2919,"_type":8,"children":2920,"level":356,"listItem":357,"markDefs":2937,"style":30},"a25f8e6e9e4a",[2921,2925,2929,2933],{"_key":2922,"_type":12,"marks":2923,"text":2924},"9a7bfc0f2a9e",[18],"vue-i18n",{"_key":2926,"_type":12,"marks":2927,"text":2928},"cc291501617f",[]," kullanarak ",{"_key":2930,"_type":12,"marks":2931,"text":2932},"726b0f1eb066",[18],"9 dil desteği",{"_key":2934,"_type":12,"marks":2935,"text":2936},"1a594e682cfd",[]," ekledim ve her dil için özel olarak mobile/desktop responsive tasarımlar yaptım.",[],{"_key":2939,"_type":8,"children":2940,"level":356,"listItem":357,"markDefs":2953,"style":30},"c141dfd9c519",[2941,2945,2949],{"_key":2942,"_type":12,"marks":2943,"text":2944},"5191300c364e",[],"Stil ve responsive düzenlemeleri için sadece ",{"_key":2946,"_type":12,"marks":2947,"text":2948},"4229f5285119",[18],"saf CSS",{"_key":2950,"_type":12,"marks":2951,"text":2952},"38e3a71f9e99",[]," kullandım; ekstra kütüphane yüklemedim.",[],{"_key":2955,"_type":8,"children":2956,"level":356,"listItem":357,"markDefs":2961,"style":30},"446a5af18a24",[2957],{"_key":2958,"_type":12,"marks":2959,"text":2960},"73e7ac960a7a",[],"Dünya ve ülke sayfalarını, Elasticsearch + Kibana’dan gelen iframe’ler aracılığıyla doğrudan gömme (embed) yöntemiyle oluşturdum.",[],{"_key":2963,"_type":8,"children":2964,"level":356,"listItem":357,"markDefs":2976,"style":30},"1e47e777f689",[2965,2969,2972],{"_key":2966,"_type":12,"marks":2967,"text":2968},"ee9ade79c9ca",[],"Web sitemi ",{"_key":2970,"_type":12,"marks":2971,"text":2811},"0b857cafdcc2",[18],{"_key":2973,"_type":12,"marks":2974,"text":2975},"137edfbef54a",[]," üzerinden canlıya aldım.",[],{"_key":2978,"_type":8,"children":2979,"markDefs":2984,"style":55},"65a4ca12c7b6",[2980],{"_key":2981,"_type":12,"marks":2982,"text":2983},"950281cbf825",[],"Kibana ve Web Sitesi İletişimi",[],{"_key":2986,"_type":8,"children":2987,"level":356,"listItem":357,"markDefs":2992,"style":30},"ef991319e736",[2988],{"_key":2989,"_type":12,"marks":2990,"text":2991},"e632871be9cc",[],"Kibana’ya erişin",[],{"_key":2994,"_type":8,"children":2995,"level":356,"listItem":357,"markDefs":3000,"style":30},"670ba94a01b0",[2996],{"_key":2997,"_type":12,"marks":2998,"text":2999},"cbdfbf928064",[],"Dashboard tasarımlarınızı yapın",[],{"_key":3002,"_type":8,"children":3003,"level":356,"listItem":357,"markDefs":3016,"style":30},"48b7854585fa",[3004,3008,3012],{"_key":3005,"_type":12,"marks":3006,"text":3007},"28fba4c6a120",[],"Tasarımınız bittikten sonra “share” seçeneğine tıklayarak istediğiniz bağlantı türünü seçin(ben projemde ",{"_key":3009,"_type":12,"marks":3010,"text":3011},"0a8255d8f9c2",[18],"“embed code”",{"_key":3013,"_type":12,"marks":3014,"text":3015},"3ee01568b202",[]," seçeneğini tercih ettim)",[],{"_key":3018,"_type":8,"children":3019,"markDefs":3024,"style":30},"0b2e67166d8a",[3020],{"_key":3021,"_type":12,"marks":3022,"text":3023},"39ee05ff98a8",[],"Aşağıda Elasticsearch’ün örnek verdiği iframe bulunmaktadır. Test edebilirsiniz.",[],{"_key":3026,"_type":8,"children":3027,"markDefs":3031,"style":30},"e04148ed792c",[3028],{"_key":3029,"_type":12,"marks":3030,"text":158},"4ed65d2e1a03",[],[],{"_key":3033,"_type":140,"code":3034,"language":3035},"4ab1a76f7a80","\u003Ciframe src=\"https://my-deployment:9243/app/dashboards#/view/7adfa750-4c81-11e8-b3d7-01146121b73d?embed=true&_g=(refreshInterval%3A(pause%3A!t%2Cvalue%3A0)%2Ctime%3A(from%3Anow-1y%2Fd%2Cto%3Anow))&show-top-menu=true&show-query-input=true&show-time-filter=true\" height=\"600\" width=\"800\">\u003C/iframe>","html",{"_key":3037,"_type":8,"children":3038,"markDefs":3060,"style":30},"9358fa5920a0",[3039,3043,3047,3051,3056],{"_key":3040,"_type":12,"marks":3041,"text":3042},"8aee22ef7cc4",[],"\n",{"_key":3044,"_type":12,"marks":3045,"text":3046},"71447fea0dda",[18],"NOT!!!",{"_key":3048,"_type":12,"marks":3049,"text":3050},"ff6902ac06d7",[]," İframe’i nasıl göstereceğinize dair detaylar sizin gereksinimlerinize göre değişiklik göstermektedir. Ek ayarlar vb. Şeyler için lütfen ",{"_key":3052,"_type":12,"marks":3053,"text":3055},"625c94c39634",[3054],"dc4663c52ce7","bu makaleyi",{"_key":3057,"_type":12,"marks":3058,"text":3059},"e195e2ce4614",[]," okuyun.",[3061],{"_key":3054,"_type":1302,"href":3062},"https://www.elastic.co/blog/how-to-embed-kibana-dashboards",{"_key":3064,"_type":8,"children":3065,"markDefs":3069,"style":30},"15ff13660883",[3066],{"_key":3067,"_type":12,"marks":3068,"text":158},"992013dd03d9",[],[],{"_key":3071,"_type":1258,"asset":3072},"b06d629b5903",{"_ref":3073,"_type":1261},"image-554f41cf59221b047c48c214624ba04ab399a3a1-1600x1200-webp",{"_key":3075,"_type":8,"children":3076,"markDefs":3080,"style":30},"e0b42c15ef43",[3077],{"_key":3078,"_type":12,"marks":3079,"text":158},"7c549358a1f9",[],[],{"_key":3082,"_type":1258,"asset":3083},"5faf0b1e98d5",{"_ref":3084,"_type":1261},"image-a387c43e5991429ed108388fe0d0c02cb6790f9d-1600x1200-webp",{"_key":3086,"_type":8,"children":3087,"markDefs":3092,"style":151},"5b748bc640b5",[3088],{"_key":3089,"_type":12,"marks":3090,"text":3091},"324958f122d5",[],"Dünya Bazlı Verilerin Kibana Dashboard Üzerinden Görselleştirilmesi",[],{"_key":3094,"_type":8,"children":3095,"markDefs":3099,"style":30},"fea6a44234ad",[3096],{"_key":3097,"_type":12,"marks":3098,"text":158},"cd27d32cf563",[],[],{"_key":3101,"_type":8,"children":3102,"markDefs":3107,"style":55},"3042354443be",[3103],{"_key":3104,"_type":12,"marks":3105,"text":3106},"aea70521363c",[],"Localde Çalışmak Güzel Ancak Projeyi Canlıya Almalıyız",[],{"_key":3109,"_type":8,"children":3110,"markDefs":3123,"style":30},"1fbbe6084f5e",[3111,3115,3119],{"_key":3112,"_type":12,"marks":3113,"text":3114},"f706f0903593",[],"Projeyi canlıya almak için AWS’in Free Tier kapsamındaki ",{"_key":3116,"_type":12,"marks":3117,"text":3118},"cd1abf731f25",[18],"t3.medium",{"_key":3120,"_type":12,"marks":3121,"text":3122},"54ae186e4122",[]," EC2 kullandım.",[],{"_key":3125,"_type":8,"children":3126,"markDefs":3131,"style":316},"2f4788bb3cff",[3127],{"_key":3128,"_type":12,"marks":3129,"text":3130},"77d568bdac8d",[18],"1. EC2 Kurulumu",[],{"_key":3133,"_type":8,"children":3134,"level":356,"listItem":357,"markDefs":3147,"style":30},"e1769a9a456a",[3135,3139,3143],{"_key":3136,"_type":12,"marks":3137,"text":3138},"32292c862766",[],"AWS Console’a giriş yaparak ",{"_key":3140,"_type":12,"marks":3141,"text":3142},"847f819e6ee7",[18],"EC2 → Launch Instance",{"_key":3144,"_type":12,"marks":3145,"text":3146},"35b362f64631",[]," seçeneğini seçin.",[],{"_key":3149,"_type":8,"children":3150,"level":356,"listItem":357,"markDefs":3162,"style":30},"fac5f91c3c43",[3151,3155,3158],{"_key":3152,"_type":12,"marks":3153,"text":3154},"7d2fc74fe817",[],"Instance türü olarak, Free Tier kapsamında yer alan ",{"_key":3156,"_type":12,"marks":3157,"text":3118},"42bbde37a495",[18],{"_key":3159,"_type":12,"marks":3160,"text":3161},"23922d9bbac2",[],"’ı tercih ettim (2 vCPU, 4 GiB RAM).",[],{"_key":3164,"_type":8,"children":3165,"level":356,"listItem":357,"markDefs":3178,"style":30},"10c644450969",[3166,3170,3174],{"_key":3167,"_type":12,"marks":3168,"text":3169},"dda8a26323f6",[],"İşletim sistemi olarak ",{"_key":3171,"_type":12,"marks":3172,"text":3173},"be8e6e2e7df7",[18],"Amazon Linux 2 AMI (HVM), SSD Volume Type",{"_key":3175,"_type":12,"marks":3176,"text":3177},"15655af52f1b",[]," kullandım. Bu, SSD diskli ve yüksek performanslı sanallaştırma destekli bir Linux dağıtımıdır. Siz ihtiyacınıza göre farklı bir işletim sistemi tercih edebilirsiniz.",[],{"_key":3180,"_type":8,"children":3181,"level":356,"listItem":357,"markDefs":3194,"style":30},"e10d40d694ac",[3182,3186,3190],{"_key":3183,"_type":12,"marks":3184,"text":3185},"43724e76667b",[],"Depolama (Storage) ayarlarında varsayılan olarak sunulan ",{"_key":3187,"_type":12,"marks":3188,"text":3189},"ea89fc02b053",[18],"8 GiB EBS SSD",{"_key":3191,"_type":12,"marks":3192,"text":3193},"60633beed995",[],"’yi kullandım. Daha fazla alana ihtiyacınız varsa 16 GiB veya üzerine çıkarabilirsiniz.",[],{"_key":3196,"_type":8,"children":3197,"level":356,"listItem":357,"markDefs":3217,"style":30},"38a24985c01b",[3198,3202,3206,3209,3213],{"_key":3199,"_type":12,"marks":3200,"text":3201},"67348d468d70",[],"SSH erişimi için, ",{"_key":3203,"_type":12,"marks":3204,"text":3205},"c6f4f5d04e75",[18],"TCP 22. portu sadece kendi IP adresimle (örneğin",{"_key":3207,"_type":12,"marks":3208,"text":1290},"637c847edd52",[],{"_key":3210,"_type":12,"marks":3211,"text":3212},"9c9fba830675",[18],"203.0.113.5/32) sınırladım.",{"_key":3214,"_type":12,"marks":3215,"text":3216},"07855001c698",[]," Böylece sunucuya yalnızca kendi cihazımdan bağlanabiliyorum. Bu sayede başkalarının sunucuma bağlanmasını engellemiş oldum.",[],{"_key":3219,"_type":8,"children":3220,"level":356,"listItem":357,"markDefs":3237,"style":30},"95dd3f493d9e",[3221,3225,3229,3233],{"_key":3222,"_type":12,"marks":3223,"text":3224},"125cc3a51e99",[18],"Güvenlik grubu (Security Group)",{"_key":3226,"_type":12,"marks":3227,"text":3228},"392218401bbb",[]," ayarlarında yalnızca ",{"_key":3230,"_type":12,"marks":3231,"text":3232},"f0dff1f716ae",[18],"SSH (port 22)",{"_key":3234,"_type":12,"marks":3235,"text":3236},"2cdd17b7c67b",[]," erişimine izin verdim.",[],{"_key":3239,"_type":8,"children":3240,"level":356,"listItem":357,"markDefs":3249,"style":30},"9fb00ff27f37",[3241,3245],{"_key":3242,"_type":12,"marks":3243,"text":3244},"bef2f2c0db7b",[18],"Outbound kurallarını",{"_key":3246,"_type":12,"marks":3247,"text":3248},"b472d3f73281",[]," AWS’nin varsayılan haliyle bıraktım (her yere açık). Böylece hem npm paketlerini çekebiliyor hem de Worldometer gibi sitelere veri kazımı için istek atabiliyorum.",[],{"_key":3251,"_type":8,"children":3252,"markDefs":3257,"style":316},"6334e266edae",[3253],{"_key":3254,"_type":12,"marks":3255,"text":3256},"bf582326b8e9",[],"2. Sunucuya Giriş ve Temel Kurulum",[],{"_key":3259,"_type":8,"children":3260,"markDefs":3265,"style":30},"a600fd2c273a",[3261],{"_key":3262,"_type":12,"marks":3263,"text":3264},"449b956847db",[18],"SSH ile Bağlanma",[],{"_key":3267,"_type":140,"code":3268,"language":3269},"213152aa6758","ssh -i “~/my-key.pem” ec2-user@EC2_PUBLIC_IP","markdown",{"_key":3271,"_type":8,"children":3272,"markDefs":3277,"style":30},"9192d95f7f23",[3273],{"_key":3274,"_type":12,"marks":3275,"text":3276},"915377289f44",[18],"Sistem Güncellemesi",[],{"_key":3279,"_type":140,"code":3280,"language":3269},"c02dde6d9aed","sudo yum update -y",{"_key":3282,"_type":8,"children":3283,"markDefs":3288,"style":30},"75b9abe1da34",[3284],{"_key":3285,"_type":12,"marks":3286,"text":3287},"6bb1eabe02e5",[18],"Chrome/Chromium Bağımlılıkları",[],{"_key":3290,"_type":8,"children":3291,"markDefs":3296,"style":30},"760354e1984c",[3292],{"_key":3293,"_type":12,"marks":3294,"text":3295},"ae1827b4fa27",[],"Puppeteer kullandığımız için gerekli kütüphaneleri ekledim:",[],{"_key":3298,"_type":140,"code":3299,"language":3269},"794d800c41b4","sudo amazon-linux-extras install epel -ysudo yum install -y \\ wget \\ bind-utils \\ libX11 \\ alsa-lib \\ gtk3 \\ ipa-gothic-fonts",{"_key":3301,"_type":8,"children":3302,"markDefs":3307,"style":30},"6a7fa0eca49d",[3303],{"_key":3304,"_type":12,"marks":3305,"text":3306},"264b20b6390f",[18],"Node.js ve Git Kurulumu",[],{"_key":3309,"_type":140,"code":3310,"language":3269},"f6ba9edf0fe6","curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh | bashsource ~/.bashrcnvm install --ltsgit --version || sudo yum install git -y",{"_key":3312,"_type":8,"children":3313,"markDefs":3318,"style":55},"9509016e3a9f",[3314],{"_key":3315,"_type":12,"marks":3316,"text":3317},"f818a3ba49ec",[],"3. Proje Kurulumu",[],{"_key":3320,"_type":8,"children":3321,"markDefs":3326,"style":30},"0ab2cb9c9035",[3322],{"_key":3323,"_type":12,"marks":3324,"text":3325},"7249ee7fb236",[18],"Repo Klonlama",[],{"_key":3328,"_type":140,"code":3329,"language":3269},"7cd5100fbd8f","git clone https://github.com/kullanici-adiniz/proje-ismi.gitcd proje-ismi",{"_key":3331,"_type":8,"children":3332,"markDefs":3337,"style":30},"96497c1d0b29",[3333],{"_key":3334,"_type":12,"marks":3335,"text":3336},"691eb9cf4c77",[18],"Çevresel Değişkenler",[],{"_key":3339,"_type":8,"children":3340,"markDefs":3345,"style":30},"3d8ed05e2ab7",[3341],{"_key":3342,"_type":12,"marks":3343,"text":3344},"d9131262a127",[],"Kök dizinde bir .env dosyası oluşturun:\nKök dizindeki .env → Geliştirme ortamı için",[],{"_key":3347,"_type":8,"children":3348,"level":356,"listItem":357,"markDefs":3353,"style":30},"b9828ef12d1d",[3349],{"_key":3350,"_type":12,"marks":3351,"text":3352},"ee960419789f",[],"Docker container’larının birbiriyle iletişim kurmasını sağlar",[],{"_key":3355,"_type":8,"children":3356,"level":356,"listItem":357,"markDefs":3361,"style":30},"5afcfd104cf6",[3357],{"_key":3358,"_type":12,"marks":3359,"text":3360},"f86c188b3ba4",[],"Local Elasticsearch bağlantı bilgilerini tutar (http://localhost:9200)",[],{"_key":3363,"_type":8,"children":3364,"level":356,"listItem":357,"markDefs":3369,"style":30},"0a023208db9d",[3365],{"_key":3366,"_type":12,"marks":3367,"text":3368},"ebb5e736864a",[],"Geliştirme sırasında hızlı test yapmamızı sağlar",[],{"_key":3371,"_type":8,"children":3372,"markDefs":3391,"style":30},"a446a6103517",[3373,3377,3380,3384,3387],{"_key":3374,"_type":12,"marks":3375,"text":3376},"d1da2e44e3cf",[18],"Ayrıca bir",{"_key":3378,"_type":12,"marks":3379,"text":1290},"697cbf06b0b4",[],{"_key":3381,"_type":12,"marks":3382,"text":3383},"878b7fd57660",[18],".env",{"_key":3385,"_type":12,"marks":3386,"text":1290},"ca351d83230b",[],{"_key":3388,"_type":12,"marks":3389,"text":3390},"885a5687685f",[18],"daha → Production ortamı için",[],{"_key":3393,"_type":8,"children":3394,"level":356,"listItem":357,"markDefs":3399,"style":30},"b675b4bca5d8",[3395],{"_key":3396,"_type":12,"marks":3397,"text":3398},"e32d6148fcca",[],"Gerçek Elasticsearch cloud bağlantı bilgileri",[],{"_key":3401,"_type":8,"children":3402,"level":356,"listItem":357,"markDefs":3407,"style":30},"62a80c46cf3f",[3403],{"_key":3404,"_type":12,"marks":3405,"text":3406},"da0557e7ceba",[],"API key’ler ve güvenlik bilgileri",[],{"_key":3409,"_type":8,"children":3410,"level":356,"listItem":357,"markDefs":3415,"style":30},"9b6e16b90c1e",[3411],{"_key":3412,"_type":12,"marks":3413,"text":3414},"9fe93d174f45",[],"Asla GitHub’a yüklenmemesi gereken hassas veriler",[],{"_key":3417,"_type":140,"code":3418},"242ea8bf567c","ELASTICSEARCH_HOST=https://your-es-endpoint:9200INDEX_NAME=world_population_dataELASTIC_USERNAME=elasticELASTIC_PASSWORD=changemeUSER_AGENT=Mozilla/...",{"_key":3420,"_type":8,"children":3421,"markDefs":3426,"style":30},"eabe548a7478",[3422],{"_key":3423,"_type":12,"marks":3424,"text":3425},"dc37d0efa2bc",[18],"Bağımlılıkları Yükleme",[],{"_key":3428,"_type":140,"code":3429,"language":3269},"79d7b86bd3f0","npm install",{"_key":3431,"_type":8,"children":3432,"markDefs":3437,"style":55},"2189bb4d025b",[3433],{"_key":3434,"_type":12,"marks":3435,"text":3436},"f8e82a06edf1",[],"4. Kesintisiz Çalıştırma ve İzleme",[],{"_key":3439,"_type":8,"children":3440,"markDefs":3445,"style":30},"a94aab86bb67",[3441],{"_key":3442,"_type":12,"marks":3443,"text":3444},"d774fcf18548",[18],"PM2 ile Süreklilik",[],{"_key":3447,"_type":140,"code":3448,"language":3269},"aefa8e10a645","npm install -g pm2pm2 start main.js --name population-scraperpm2 savepm2 startup",{"_key":3450,"_type":8,"children":3451,"level":356,"listItem":357,"markDefs":3456,"style":30},"a46042be93b2",[3452],{"_key":3453,"_type":12,"marks":3454,"text":3455},"0ee2a3203b20",[],"pm2 startup komutu, EC2 yeniden başlasa bile PM2 servisinin otomatik ayağa kalkmasını sağlar. Bu sayede bu işlemi her seferinde elle başlatmamıza gerek kalmaz",[],{"_key":3458,"_type":8,"children":3459,"level":356,"listItem":357,"markDefs":3464,"style":30},"4a4b761d3c04",[3460],{"_key":3461,"_type":12,"marks":3462,"text":3463},"ee4073746e2f",[],"pm2 save ise mevcut process listesini kaydeder.",[],{"_key":3466,"_type":8,"children":3467,"markDefs":3472,"style":30},"a997edc08598",[3468],{"_key":3469,"_type":12,"marks":3470,"text":3471},"a23faba69b36",[18],"Log Takibi",[],{"_key":3474,"_type":8,"children":3475,"level":356,"listItem":357,"markDefs":3480,"style":30},"0fb8c70fb2e9",[3476],{"_key":3477,"_type":12,"marks":3478,"text":3479},"03c389166393",[],"Gerçek zamanlı log izlemek için:",[],{"_key":3482,"_type":140,"code":3483,"language":3269},"3827eab15703","pm2 logs population-scraper",{"_key":3485,"_type":8,"children":3486,"level":356,"listItem":357,"markDefs":3491,"style":30},"1a8de57e816d",[3487],{"_key":3488,"_type":12,"marks":3489,"text":3490},"6bcb0f2ccced",[],"Hatayı veya ilerlemeyi konuya göre renkli ve zaman damgalı görebiliyorsunuz.",[],{"_key":3493,"_type":8,"children":3494,"markDefs":3499,"style":55},"786c91394d17",[3495],{"_key":3496,"_type":12,"marks":3497,"text":3498},"35dfdf94d0d5",[],"5. Canlı Kazıma Döngüsü",[],{"_key":3501,"_type":8,"children":3502,"level":356,"listItem":357,"markDefs":3507,"style":30},"c05fb74b7631",[3503],{"_key":3504,"_type":12,"marks":3505,"text":3506},"c6d352f1bfb5",[],"main.js içinde yazdığımprocessDataWithEnergy() fonksiyonunu inceleyelim:",[],{"_key":3509,"_type":8,"children":3510,"level":356,"listItem":357,"markDefs":3519,"style":30},"19261fbdb65f",[3511,3515],{"_key":3512,"_type":12,"marks":3513,"text":3514},"b8f98fa7e144",[18],"30 dakikada bir",{"_key":3516,"_type":12,"marks":3517,"text":3518},"ac10b9853a22",[]," tekrar eden bir zamanlayıcıyla (setInterval) tetikleniyor.",[],{"_key":3521,"_type":8,"children":3522,"level":356,"listItem":357,"markDefs":3527,"style":30},"7c6a5986dc45",[3523],{"_key":3524,"_type":12,"marks":3525,"text":3526},"7dd7f28b862a",[],"Önce dinamik kazıma (fetchWorldDataDynamic, fetchCountryDataDynamic) deneniyor.",[],{"_key":3529,"_type":8,"children":3530,"level":356,"listItem":357,"markDefs":3535,"style":30},"68d5ffee44b5",[3531],{"_key":3532,"_type":12,"marks":3533,"text":3534},"d4d60652a9d6",[],"Eğer dinamik kazımada bir hata oluşursa, kod bloğunda yakalanıp null dönüyor; bu durumda statik kazıma ya da hata yönetimi devreye giriyor.",[],{"_key":3537,"_type":8,"children":3538,"level":356,"listItem":357,"markDefs":3543,"style":30},"8f365de8552e",[3539],{"_key":3540,"_type":12,"marks":3541,"text":3542},"613d18902bf1",[],"Böylece EC2 üzerinde 7/24 veri akışı kesintisiz olarak devam ediyor.",[],{"_key":3545,"_type":8,"children":3546,"markDefs":3551,"style":55},"7bcd2cf25034",[3547],{"_key":3548,"_type":12,"marks":3549,"text":3550},"0182fb3fc070",[],"6. GitHub Pipeline ve Cloudflare Entegrasyonu",[],{"_key":3553,"_type":8,"children":3554,"markDefs":3559,"style":30},"018abf24fdf3",[3555],{"_key":3556,"_type":12,"marks":3557,"text":3558},"6127bf9e7266",[],"Projede domain, pipeline ve otomatik deployment tarafını tamamen otomatize ettim.",[],{"_key":3561,"_type":8,"children":3562,"markDefs":3567,"style":55},"fbcb8f9f07de",[3563],{"_key":3564,"_type":12,"marks":3565,"text":3566},"3d4c00338b68",[],"Domain & Cloudflare",[],{"_key":3569,"_type":8,"children":3570,"markDefs":3583,"style":30},"b269b4959b92",[3571,3575,3579],{"_key":3572,"_type":12,"marks":3573,"text":3574},"305842ce1a92",[],"Domain’i Namecheap’ten(Natro) aldıktan sonra Cloudflare’e taşıdık.\nBu sayede ",{"_key":3576,"_type":12,"marks":3577,"text":3578},"7080740d860d",[18],"GitHub — Sunucu — Domain",{"_key":3580,"_type":12,"marks":3581,"text":3582},"36e11bac9597",[]," arasında bir köprü kuruldu.\nArtık main branch’e push attığım anda güncelleme otomatik olarak canlıya geçiyor.",[],{"_key":3585,"_type":8,"children":3586,"markDefs":3591,"style":30},"6d82a24ec871",[3587],{"_key":3588,"_type":12,"marks":3589,"text":3590},"32c4b0a34bc4",[],"Cloudflare tarafında:",[],{"_key":3593,"_type":8,"children":3594,"level":356,"listItem":357,"markDefs":3599,"style":30},"211a81bbbdea",[3595],{"_key":3596,"_type":12,"marks":3597,"text":3598},"68db29660686",[],"CDN sayesinde siteye dünyanın her yerinden hızlı erişim sağlanıyor",[],{"_key":3601,"_type":8,"children":3602,"level":356,"listItem":357,"markDefs":3607,"style":30},"edfcbb43010a",[3603],{"_key":3604,"_type":12,"marks":3605,"text":3606},"67f7c982e0b8",[],"DDoS koruması ve cache optimizasyonu da bonus oldu",[],{"_key":3609,"_type":8,"children":3610,"markDefs":3615,"style":129},"877791d140af",[3611],{"_key":3612,"_type":12,"marks":3613,"text":3614},"4c30ebec929b",[],"Son Olarak Yaptığımız İşlemleri Kısaca Özetleyelim",[],{"_key":3617,"_type":8,"children":3618,"markDefs":3627,"style":30},"82a22868ac0d",[3619,3623],{"_key":3620,"_type":12,"marks":3621,"text":3622},"a5104e91e7b5",[18],"Güvenlik grubu",{"_key":3624,"_type":12,"marks":3625,"text":3626},"c4ba6fdaf1d0",[]," sadece gerekli portlara izin veriyor (SSH, Elasticsearch).",[],{"_key":3629,"_type":8,"children":3630,"markDefs":3639,"style":30},"bf2baa965703",[3631,3635],{"_key":3632,"_type":12,"marks":3633,"text":3634},"d0af9281d0ff",[18],"Amazon Linux 2",{"_key":3636,"_type":12,"marks":3637,"text":3638},"c19741f40a26",[]," üzerinde Node.js, Chrome bağımlılıkları ve Git kurulumu tamamlandı.",[],{"_key":3641,"_type":8,"children":3642,"markDefs":3651,"style":30},"5093c79ad7b9",[3643,3647],{"_key":3644,"_type":12,"marks":3645,"text":3646},"d85a29d17784",[18],"Proje",{"_key":3648,"_type":12,"marks":3649,"text":3650},"ebf67dde1b0e",[]," klonlanıp, .env ile konfigürasyonu yapıldı.",[],{"_key":3653,"_type":8,"children":3654,"markDefs":3663,"style":30},"a45b093814e7",[3655,3659],{"_key":3656,"_type":12,"marks":3657,"text":3658},"c2cca5486ad0",[18],"PM2",{"_key":3660,"_type":12,"marks":3661,"text":3662},"481f6c5f60e6",[]," ile kesintisiz, otomatik başlatılan bir servis olarak uygulama ayağa kaldırıldı.",[],{"_key":3665,"_type":8,"children":3666,"markDefs":3675,"style":30},"5528736ca4c2",[3667,3671],{"_key":3668,"_type":12,"marks":3669,"text":3670},"e5974299fac5",[18],"Zamanlayıcı",{"_key":3672,"_type":12,"marks":3673,"text":3674},"7507ca480385",[]," sayesinde 30 dakikada bir, dinamik (ve gerekirse fallback statik) kazıma işlemi çalıştırılıyor.",[],{"_key":3677,"_type":8,"children":3678,"markDefs":3687,"style":30},"6ccce4dff471",[3679,3683],{"_key":3680,"_type":12,"marks":3681,"text":3682},"ff9f89e43968",[18],"Cloudflare entegrasyonu",{"_key":3684,"_type":12,"marks":3685,"text":3686},"298a50d75bff",[]," ile domain yönetimi, SSL ve CDN yapılandırması tamamlandı. Artık siteye dünyanın her yerinden hızlı ve güvenli şekilde erişilebiliyor.",[],{"_key":3689,"_type":8,"children":3690,"markDefs":3706,"style":30},"880f838fe557",[3691,3695,3699,3702],{"_key":3692,"_type":12,"marks":3693,"text":3694},"76b93eb6817f",[18],"GitHub Actions pipeline",{"_key":3696,"_type":12,"marks":3697,"text":3698},"f47abaf16518",[]," devreye alındı: her push sonrası testler çalışıyor, son sürüm otomatik olarak EC2’ye deploy ediliyor ve ",{"_key":3700,"_type":12,"marks":3701,"text":3658},"e6ed2b7b492f",[18],{"_key":3703,"_type":12,"marks":3704,"text":3705},"397ea8b9b930",[]," aracılığıyla sıfır kesintiyle güncelleniyor.",[],{"_key":3708,"_type":8,"children":3709,"markDefs":3714,"style":30},"b1e57a2212f7",[3710],{"_key":3711,"_type":12,"marks":3712,"text":3713},"8d105a385454",[],"Bu adımlarla, t3.medium Free Tier EC2 örneğinde sorunsuz şekilde canlı kazıma ortamı kurmuş oldum. Aynı adımları inceleyerek sizler de rahatlıkla yapabilirsiniz. İhtiyaç duymanız halinde anlık hata bildirimleri alabileceğiniz ayarları da yapabilirsiniz",[],{"_key":3716,"_type":8,"children":3717,"markDefs":3722,"style":55},"d2dd4293891a",[3718],{"_key":3719,"_type":12,"marks":3720,"text":3721},"d5283374f451",[],"NOT !!! LÜTFEN AWS FATURALANDIRMA ALARMLARINI ETKİNLEŞTİRMEYİ UNUTMAYIN :)",[],{"_key":3724,"_type":8,"children":3725,"markDefs":3730,"style":55},"5fd6aab008be",[3726],{"_key":3727,"_type":12,"marks":3728,"text":3729},"b590bdd368fc",[],"Sonuç ve Değerlendirme",[],{"_key":3732,"_type":8,"children":3733,"markDefs":3738,"style":30},"0f4c8a421db7",[3734],{"_key":3735,"_type":12,"marks":3736,"text":3737},"8373880adc30",[],"Bu projede asıl hedefim; kazıdığım nüfus verilerini tek bir Elasticsearch indeksinde toplayarak hem ülke hem de dünya verilerini birlikte yönetilebilir hale getirmekti.",[],{"_key":3740,"_type":8,"children":3741,"markDefs":3746,"style":30},"6c0b761ec35b",[3742],{"_key":3743,"_type":12,"marks":3744,"text":3745},"eb4bb2439e49",[],"Bu süreçte Elasticsearch’ün ölçeklenebilirliği, güçlü sorgu yapısı ve Kibana ile olan uyumu gerçekten fark yarattı. Proje boyunca elimdeki veriyi sadece saklamadım; anlamlı hale getirip görselleştirerek canlı bir sisteme dönüştürdüm. Umarım projemi ve projemi anlattığım bu yazıyı sevmişsinizdir :)",[],{"_key":3748,"_type":8,"children":3749,"markDefs":3754,"style":3756},"df7d18d511a0",[3750],{"_key":3751,"_type":12,"marks":3752,"text":2290},"4edfab0d231e",[3753,18],"36742b64f0ab",[3755],{"_key":3753,"_type":1302,"href":2297},"h6",[2407],"Büyük veri setlerinde milisaniyelik arama performansı. Elasticsearch'ün çalışma prensiplerini, dağıtık mimarisini ve gerçek zamanlı arama yeteneklerini inceleyin.",{"_type":1258,"asset":3760},{"_ref":3761,"_type":1261},"image-c986841bcc15518c76c7d577411577bc147a99ab-2400x1260-webp","2025-12-26T17:55:32.162Z","elasticsearch-ile-gercek-zamanli-nufus-verisi-toplama-ve-gorsellestirme","Elasticsearch İle Gerçek Zamanlı Nüfus Verisi Toplama ve Görselleştirme",1776095187438]