{"id":43964,"date":"2026-08-09T21:03:48","date_gmt":"2026-08-09T18:03:48","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/jupyter-notebookta-pandas-kullanarak-veri-seti-yukleme-rehberi\/"},"modified":"2026-08-09T21:04:12","modified_gmt":"2026-08-09T18:04:12","slug":"jupyter-notebookta-pandas-kullanarak-veri-seti-yukleme-rehberi","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/jupyter-notebookta-pandas-kullanarak-veri-seti-yukleme-rehberi\/","title":{"rendered":"Jupyter Notebook&#8217;ta Pandas Kullanarak Veri Seti Y\u00fckleme Rehberi"},"content":{"rendered":"<h2>Jupyter Notebook&#8217;ta Pandas Kullanarak Veri Seti Y\u00fckleme Rehberi<\/h2>\n<p>Veri analizi d\u00fcnyas\u0131na ad\u0131m atan her profesyonelin ve merakl\u0131n\u0131n kar\u015f\u0131la\u015ft\u0131\u011f\u0131 ilk ve en kritik ad\u0131mlardan biri, ham veriyi \u00e7al\u0131\u015fma ortam\u0131na do\u011fru bir \u015fekilde aktarmakt\u0131r. Peki, bu s\u00fcreci Jupyter Notebook&#8217;un interaktif yap\u0131s\u0131 ve Pandas k\u00fct\u00fcphanesinin g\u00fcc\u00fcyle nas\u0131l sorunsuz hale getirebilirsiniz? Bu makale, farkl\u0131 formatlardaki veri setlerini Jupyter Notebook&#8217;a y\u00fcklemenin inceliklerini ad\u0131m ad\u0131m a\u00e7\u0131klayacak, kar\u015f\u0131la\u015f\u0131labilecek zorluklara pratik \u00e7\u00f6z\u00fcmler sunacak ve veri analizi yolculu\u011funuzun sa\u011flam bir temele oturmas\u0131n\u0131 sa\u011flayacakt\u0131r. Veri bilimi projelerinizde veriyi etkin bir \u015fekilde i\u015flemek i\u00e7in bu temel beceriye hakim olmak, projenizin ba\u015far\u0131s\u0131 i\u00e7in hayati \u00f6neme sahiptir.<\/p>\n<h2>Veri Analizi Yolculu\u011funun \u0130lk Ad\u0131m\u0131: Neden Pandas ve Jupyter Notebook?<\/h2>\n<p>G\u00fcn\u00fcm\u00fcz\u00fcn veri odakl\u0131 d\u00fcnyas\u0131nda, ham verilerden anlaml\u0131 i\u00e7g\u00f6r\u00fcler elde etmek, bir\u00e7ok sekt\u00f6rde rekabet avantaj\u0131 sa\u011flaman\u0131n anahtar\u0131d\u0131r. Bu yolculu\u011fun ba\u015flang\u0131\u00e7 noktas\u0131 ise veriyi do\u011fru bir \u015fekilde y\u00fcklemek ve analiz i\u00e7in haz\u0131r hale getirmektir. \u0130\u015fte bu noktada, Python ekosisteminin iki g\u00fc\u00e7l\u00fc arac\u0131 olan Pandas k\u00fct\u00fcphanesi ve Jupyter Notebook ortam\u0131 devreye girer. Bu ikili, veri bilimcilerin ve analistlerin veriye eri\u015fim, i\u015fleme ve ke\u015fif s\u00fcre\u00e7lerini son derece verimli ve etkile\u015fimli bir hale getirir.<\/p>\n<p>Pandas, Python programlama dili i\u00e7in geli\u015ftirilmi\u015f, y\u00fcksek performansl\u0131, kullan\u0131m\u0131 kolay veri yap\u0131lar\u0131 ve veri analizi ara\u00e7lar\u0131 sunan a\u00e7\u0131k kaynakl\u0131 bir k\u00fct\u00fcphanedir. \u00d6zellikle tablo \u015feklindeki verilerle (elektronik tablolar, SQL tablolar\u0131 veya DataFrame (veri \u00e7er\u00e7evesi) olarak bilinen veri yap\u0131lar\u0131) \u00e7al\u0131\u015fmak \u00fczere tasarlanm\u0131\u015ft\u0131r. Pandas&#8217;\u0131n temel veri yap\u0131lar\u0131 olan Series (seri) ve DataFrame, veri manip\u00fclasyonu, temizli\u011fi ve \u00f6n i\u015fleme (preprocessing) g\u00f6revlerini basitle\u015ftirir. \u00d6rne\u011fin, bir sat\u0131\u015f raporunu analiz ederken, verileri filtrelemek, s\u00fctunlar\u0131 yeniden adland\u0131rmak veya eksik de\u011ferleri doldurmak gibi i\u015flemler Pandas ile saniyeler i\u00e7inde ger\u00e7ekle\u015ftirilebilir. Bu k\u00fct\u00fcphane, karma\u015f\u0131k veri setlerini anla\u015f\u0131l\u0131r ve y\u00f6netilebilir formatlara d\u00f6n\u00fc\u015ft\u00fcrme yetene\u011fi sayesinde veri analizi s\u00fcre\u00e7lerinin vazge\u00e7ilmez bir par\u00e7as\u0131 haline gelmi\u015ftir.<\/p>\n<p>Jupyter Notebook ise, canl\u0131 kod, denklem, g\u00f6rselle\u015ftirme ve a\u00e7\u0131klay\u0131c\u0131 metinleri tek bir web tabanl\u0131 belge i\u00e7inde birle\u015ftirmeye olanak tan\u0131yan etkile\u015fimli bir geli\u015ftirme ortam\u0131d\u0131r. Veri analizi projelerinde Jupyter Notebook kullanman\u0131n en b\u00fcy\u00fck avantaj\u0131, kod bloklar\u0131n\u0131 (code blocks) ad\u0131m ad\u0131m \u00e7al\u0131\u015ft\u0131rabilme ve her ad\u0131m\u0131n sonucunu an\u0131nda g\u00f6rebilme imkan\u0131 sunmas\u0131d\u0131r. Bu \u00f6zellik, \u00f6zellikle veri ke\u015ffi (data exploration) ve prototipleme (prototyping) a\u015famalar\u0131nda olduk\u00e7a de\u011ferlidir. Bir veri setini y\u00fckledikten sonra, ilk birka\u00e7 sat\u0131r\u0131n\u0131 hemen g\u00f6r\u00fcnt\u00fcleyebilir, veri tiplerini kontrol edebilir veya h\u0131zl\u0131 bir \u00f6zet istatistik elde edebilirsiniz. Bu etkile\u015fimli yap\u0131, hatalar\u0131 an\u0131nda tespit etmeye ve \u00e7\u00f6z\u00fcm \u00fcretmeye yard\u0131mc\u0131 olurken, ayn\u0131 zamanda analiz s\u00fcrecini daha \u015feffaf ve anla\u015f\u0131l\u0131r k\u0131lar. Bir veri analistinin, kodunu \u00e7al\u0131\u015ft\u0131r\u0131p \u00e7\u0131kt\u0131s\u0131n\u0131 an\u0131nda g\u00f6rmesi, deneme-yan\u0131lma yoluyla en iyi \u00e7\u00f6z\u00fcme ula\u015fmas\u0131n\u0131 h\u0131zland\u0131r\u0131r.<\/p>\n<p>Bu iki arac\u0131n birle\u015fimi, veri analistlerine ve bilimcilerine, ham veriden nihai sonuca kadar olan t\u00fcm s\u00fcreci tek bir platformda y\u00f6netme g\u00fcc\u00fc verir. \u00d6rne\u011fin, bir m\u00fc\u015fteri geri bildirimleri veri setini ele alal\u0131m. Bu veriyi Jupyter Notebook&#8217;a Pandas ile y\u00fckledikten sonra, metin analizi i\u00e7in gerekli \u00f6n i\u015flemleri yapabilir, duygusal analiz (sentiment analysis) modelleri olu\u015fturabilir ve sonu\u00e7lar\u0131 do\u011frudan ayn\u0131 not defteri i\u00e7inde g\u00f6rselle\u015ftirebilirsiniz. Bu entegrasyon, i\u015f ak\u0131\u015f\u0131n\u0131 (workflow) kolayla\u015ft\u0131r\u0131r ve projelerin daha h\u0131zl\u0131 tamamlanmas\u0131n\u0131 sa\u011flar. Ayr\u0131ca, Jupyter Notebook&#8217;lar, analizlerinizi ba\u015fkalar\u0131yla payla\u015fmak i\u00e7in de m\u00fckemmel bir format sunar; \u00e7\u00fcnk\u00fc kodunuz, \u00e7\u0131kt\u0131n\u0131z ve a\u00e7\u0131klamalar\u0131n\u0131z tek bir yerde toplanm\u0131\u015ft\u0131r. Dolay\u0131s\u0131yla, veri y\u00fckleme s\u00fcrecini do\u011fru bir \u015fekilde anlamak ve uygulamak, bu g\u00fc\u00e7l\u00fc ekosistemden tam anlam\u0131yla faydalanman\u0131n ilk ve en \u00f6nemli ad\u0131m\u0131d\u0131r.<\/p>\n<h2>Jupyter Notebook Ortam\u0131nda Pandas&#8217;\u0131 Kurulum ve Haz\u0131rl\u0131k S\u00fcreci Nas\u0131l \u0130\u015fler?<\/h2>\n<p>Veri analizi yolculu\u011funa ba\u015flamadan \u00f6nce, gerekli ara\u00e7lar\u0131 do\u011fru bir \u015fekilde kurmak ve \u00e7al\u0131\u015fma ortam\u0131n\u0131z\u0131 haz\u0131rlamak b\u00fcy\u00fck \u00f6nem ta\u015f\u0131r. Jupyter Notebook ve Pandas k\u00fct\u00fcphanesi, Python ekosisteminin bir par\u00e7as\u0131 oldu\u011fundan, kurulum s\u00fcreci genellikle Python da\u011f\u0131t\u0131mlar\u0131 \u00fczerinden ger\u00e7ekle\u015ftirilir. Bu b\u00f6l\u00fcmde, bu temel ara\u00e7lar\u0131 nas\u0131l kuraca\u011f\u0131n\u0131z\u0131 ve ilk veri y\u00fckleme i\u015fleminiz i\u00e7in Jupyter Notebook&#8217;u nas\u0131l haz\u0131rlayaca\u011f\u0131n\u0131z\u0131 ad\u0131m ad\u0131m inceleyece\u011fiz.<\/p>\n<p>Python ve veri bilimi k\u00fct\u00fcphaneleri i\u00e7in en yayg\u0131n ve \u00f6nerilen kurulum y\u00f6ntemi Anaconda veya Miniconda kullanmakt\u0131r. Anaconda, Python ile birlikte y\u00fczlerce pop\u00fcler veri bilimi k\u00fct\u00fcphanesini (Pandas, NumPy, Matplotlib, Scikit-learn vb.) ve Jupyter Notebook gibi ara\u00e7lar\u0131 \u00f6nceden paketlenmi\u015f olarak sunan kapsaml\u0131 bir da\u011f\u0131t\u0131md\u0131r. Miniconda ise, daha hafif bir se\u00e7enek olup sadece Python&#8217;u ve Conda paket y\u00f6neticisini i\u00e7erir; k\u00fct\u00fcphaneleri ihtiyac\u0131n\u0131za g\u00f6re sonradan kurman\u0131za olanak tan\u0131r. Her iki durumda da, kurulum dosyalar\u0131n\u0131 resmi web sitelerinden indirip i\u015fletim sisteminize uygun ad\u0131mlar\u0131 takip ederek kolayca kurabilirsiniz. Kurulum tamamland\u0131ktan sonra, terminal veya komut istemcisinde <code>conda list<\/code> komutunu \u00e7al\u0131\u015ft\u0131rarak kurulu paketleri g\u00f6rebilirsiniz. E\u011fer Pandas kurulu de\u011filse, <code>conda install pandas<\/code> veya <code>pip install pandas<\/code> komutunu kullanarak kolayca y\u00fckleyebilirsiniz.<\/p>\n<p>Kurulumu takiben, Jupyter Notebook&#8217;u ba\u015flatmak i\u00e7in terminal veya komut istemcisinde <code>jupyter notebook<\/code> komutunu \u00e7al\u0131\u015ft\u0131rman\u0131z yeterlidir. Bu komut, varsay\u0131lan web taray\u0131c\u0131n\u0131zda yerel bir sunucu (localhost) \u00fczerinde Jupyter aray\u00fcz\u00fcn\u00fc a\u00e7acakt\u0131r. Burada, mevcut klas\u00f6rlerinizi g\u00f6rebilir, yeni bir not defteri (notebook) olu\u015fturabilir veya var olanlar\u0131 a\u00e7abilirsiniz. Yeni bir not defteri olu\u015fturmak i\u00e7in genellikle sa\u011f \u00fcst k\u00f6\u015fedeki &#8220;New&#8221; (Yeni) d\u00fc\u011fmesine t\u0131klay\u0131p &#8220;Python 3&#8221; (veya kulland\u0131\u011f\u0131n\u0131z Python \u00e7ekirde\u011fi (kernel)) se\u00e7ene\u011fini se\u00e7meniz gerekir. Bu i\u015flem, size bo\u015f bir not defteri (.ipynb uzant\u0131l\u0131 bir dosya) a\u00e7acakt\u0131r.<\/p>\n<p>Jupyter Notebook&#8217;u a\u00e7t\u0131ktan sonra, ilk yapman\u0131z gereken Pandas k\u00fct\u00fcphanesini i\u00e7eri aktarmakt\u0131r (import). Bu, not defterinizde Pandas fonksiyonlar\u0131n\u0131 kullanabilmenizi sa\u011flar. Standart uygulama, Pandas&#8217;\u0131 <code>pd<\/code> takma ad\u0131yla i\u00e7eri aktarmakt\u0131r; bu, kodu daha k\u0131sa ve okunabilir hale getirir. Bir h\u00fccreye a\u015fa\u011f\u0131daki kodu yaz\u0131p \u00e7al\u0131\u015ft\u0131rarak (Shift + Enter tu\u015f kombinasyonu ile) bu i\u015flemi ger\u00e7ekle\u015ftirebilirsiniz:<\/p>\n<div class=\"code-container\">\n<pre><code>import pandas as pd<\/code><\/pre>\n<\/p><\/div>\n<p>Bu komut \u00e7al\u0131\u015ft\u0131r\u0131ld\u0131\u011f\u0131nda herhangi bir hata mesaj\u0131 almazsan\u0131z, Pandas ba\u015far\u0131yla i\u00e7eri aktar\u0131lm\u0131\u015f demektir ve art\u0131k veri y\u00fckleme i\u015flemlerine haz\u0131rs\u0131n\u0131z. E\u011fer bir hata al\u0131rsan\u0131z, genellikle Pandas&#8217;\u0131n do\u011fru \u015fekilde kurulmad\u0131\u011f\u0131 veya Python ortam\u0131n\u0131zda bir sorun oldu\u011fu anlam\u0131na gelir. Bu durumda, kurulum ad\u0131mlar\u0131n\u0131 tekrar g\u00f6zden ge\u00e7irmeniz veya internet \u00fczerindeki kaynaklardan yard\u0131m alman\u0131z gerekebilir.<\/p>\n<p>Jupyter Notebook&#8217;un etkile\u015fimli yap\u0131s\u0131, bu haz\u0131rl\u0131k s\u00fcrecini olduk\u00e7a kolayla\u015ft\u0131r\u0131r. Her ad\u0131m\u0131 ayr\u0131 bir h\u00fccrede deneyebilir, \u00e7\u0131kt\u0131s\u0131n\u0131 an\u0131nda g\u00f6rebilir ve herhangi bir sorunla kar\u015f\u0131la\u015ft\u0131\u011f\u0131n\u0131zda kolayca geri d\u00f6n\u00fcp d\u00fczeltebilirsiniz. Ayr\u0131ca, not defterinizde a\u00e7\u0131klay\u0131c\u0131 metinler (Markdown kullanarak) ekleyerek, kodunuzu ve analiz s\u00fcrecinizi belgeleyebilir, b\u00f6ylece hem kendiniz hem de ba\u015fkalar\u0131 i\u00e7in daha anla\u015f\u0131l\u0131r hale getirebilirsiniz. Bu haz\u0131rl\u0131k ad\u0131mlar\u0131 tamamland\u0131ktan sonra, farkl\u0131 formatlardaki veri setlerini Jupyter Notebook&#8217;unuza y\u00fcklemeye ve veri analizi macera\u0131n\u0131za ba\u015flamaya haz\u0131rs\u0131n\u0131z demektir.<\/p>\n<h2>En Yayg\u0131n Veri Formatlar\u0131n\u0131 Pandas ile Jupyter&#8217;a Nas\u0131l Y\u00fcklersiniz?<\/h2>\n<p>Veri analizi projelerinde kar\u015f\u0131la\u015f\u0131lan veri setleri genellikle farkl\u0131 formatlarda gelir. Bu b\u00f6l\u00fcmde, en yayg\u0131n kullan\u0131lan veri formatlar\u0131ndan biri olan CSV (Comma Separated Values &#8211; Virg\u00fclle Ayr\u0131lm\u0131\u015f De\u011ferler) dosyalar\u0131n\u0131 Pandas&#8217;\u0131n <code>read_csv()<\/code> fonksiyonu ile Jupyter Notebook&#8217;a nas\u0131l y\u00fckleyece\u011finizi detayl\u0131 bir \u015fekilde inceleyece\u011fiz. Bu fonksiyon, veri y\u00fckleme i\u015flemlerinin temelini olu\u015fturur ve bir\u00e7ok parametresi sayesinde esnek bir kullan\u0131m sunar.<\/p>\n<h3>CSV Dosyalar\u0131n\u0131 Y\u00fckleme: <code>pd.read_csv()<\/code> Kullan\u0131m\u0131<\/h3>\n<p>CSV dosyalar\u0131, verilerin virg\u00fcllerle ayr\u0131ld\u0131\u011f\u0131 d\u00fcz metin dosyalar\u0131d\u0131r ve basit yap\u0131lar\u0131 nedeniyle veri payla\u015f\u0131m\u0131nda en pop\u00fcler formatlardan biridir. Pandas&#8217;\u0131n <code>read_csv()<\/code> fonksiyonu, bu t\u00fcr dosyalar\u0131 kolayca bir DataFrame&#8217;e d\u00f6n\u00fc\u015ft\u00fcrmek i\u00e7in tasarlanm\u0131\u015ft\u0131r. Temel kullan\u0131m\u0131 olduk\u00e7a basittir:<\/p>\n<div class=\"code-container\">\n<pre><code>import pandas as pd\n\n# \u00d6rnek bir CSV dosyas\u0131n\u0131 y\u00fckleme\ndf = pd.read_csv('ornek_veri.csv')\n\n# \u0130lk 5 sat\u0131r\u0131 g\u00f6r\u00fcnt\u00fcleme\nprint(df.head())<\/code><\/pre>\n<\/p><\/div>\n<p>Yukar\u0131daki \u00f6rnekte, <code>ornek_veri.csv<\/code> adl\u0131 dosya, ayn\u0131 dizinde (directory) bulundu\u011fu varsay\u0131larak y\u00fcklenir. E\u011fer dosya farkl\u0131 bir konumdaysa, dosyan\u0131n tam yolunu (absolute path) veya g\u00f6receli yolunu (relative path) belirtmeniz gerekir. \u00d6rne\u011fin, <code>veri_klasoru\/musteri_listesi.csv<\/code> gibi.<\/p>\n<p><code>read_csv()<\/code> fonksiyonu, veri y\u00fckleme s\u00fcrecini daha da \u00f6zelle\u015ftirmek i\u00e7in bir\u00e7ok parametreye sahiptir. Bu parametreler, \u00f6zellikle karma\u015f\u0131k veya standart d\u0131\u015f\u0131 CSV dosyalar\u0131yla \u00e7al\u0131\u015f\u0131rken hayati \u00f6neme sahiptir:<\/p>\n<ul>\n<li><code>sep<\/code> (separator &#8211; ay\u0131r\u0131c\u0131): Varsay\u0131lan olarak virg\u00fcl (<code>,<\/code>) ile ayr\u0131lm\u0131\u015f dosyalar\u0131 okur. Ancak baz\u0131 dosyalar noktal\u0131 virg\u00fcl (<code>;<\/code>), sekme (<code>\\t<\/code>) veya ba\u015fka bir karakterle ayr\u0131lm\u0131\u015f olabilir. \u00d6rne\u011fin, noktal\u0131 virg\u00fclle ayr\u0131lm\u0131\u015f bir dosya i\u00e7in: <code>pd.read_csv('veriler.csv', sep=';')<\/code>.<\/li>\n<li><code>header<\/code> (ba\u015fl\u0131k): Veri setinizin ilk sat\u0131r\u0131n\u0131n s\u00fctun ba\u015fl\u0131klar\u0131n\u0131 (column headers) i\u00e7erip i\u00e7ermedi\u011fini belirtir. Varsay\u0131lan olarak <code>0<\/code> (ilk sat\u0131r ba\u015fl\u0131k) de\u011ferini al\u0131r. E\u011fer dosyan\u0131z\u0131n ba\u015fl\u0131k sat\u0131r\u0131 yoksa, <code>header=None<\/code> olarak ayarlayabilirsiniz. Bu durumda Pandas, s\u00fctunlara otomatik olarak 0&#8217;dan ba\u015flayan tam say\u0131 adlar\u0131 (0, 1, 2&#8230;) verir. E\u011fer ba\u015fl\u0131klar ikinci sat\u0131rda ise <code>header=1<\/code> gibi de\u011ferler de verebilirsiniz.<\/li>\n<li><code>index_col<\/code> (dizin s\u00fctunu): Veri setinizdeki hangi s\u00fctunun DataFrame&#8217;in dizini (index) olarak kullan\u0131laca\u011f\u0131n\u0131 belirtir. \u00d6rne\u011fin, m\u00fc\u015fteri ID&#8217;lerinin bulundu\u011fu bir s\u00fctunu dizin olarak atamak isteyebilirsiniz: <code>pd.read_csv('musteriler.csv', index_col='MusteriID')<\/code>. Bir s\u00fctun numaras\u0131n\u0131 da kullanabilirsiniz (\u00f6rne\u011fin, <code>index_col=0<\/code>).<\/li>\n<li><code>names<\/code> (adlar): E\u011fer veri setinizin ba\u015fl\u0131k sat\u0131r\u0131 yoksa ve s\u00fctunlara \u00f6zel isimler vermek istiyorsan\u0131z, bu parametreye bir liste (list) halinde s\u00fctun isimleri ge\u00e7irebilirsiniz: <code>pd.read_csv('veri.csv', header=None, names=['SutunA', 'SutunB', 'SutunC'])<\/code>.<\/li>\n<li><code>encoding<\/code> (kodlama): CSV dosyalar\u0131 farkl\u0131 karakter kodlamalar\u0131yla kaydedilmi\u015f olabilir (\u00f6rne\u011fin, &#8216;UTF-8&#8217;, &#8216;latin-1&#8217;, &#8216;ISO-8859-1&#8217;). Yanl\u0131\u015f kodlama belirtildi\u011finde <code>UnicodeDecodeError<\/code> hatas\u0131 alabilirsiniz. Bu durumda do\u011fru kodlamay\u0131 denemeniz gerekir: <code>pd.read_csv('yorumlar.csv', encoding='latin-1')<\/code>. \u00d6zellikle T\u00fcrk\u00e7e karakter i\u00e7eren dosyalarda bu parametre kritik olabilir.<\/li>\n<li><code>skiprows<\/code> (sat\u0131r atla): Dosyan\u0131n ba\u015f\u0131ndaki belirli say\u0131da sat\u0131r\u0131 atlamak istedi\u011finizde kullan\u0131l\u0131r. \u00d6rne\u011fin, ilk 3 sat\u0131r\u0131 atlamak i\u00e7in: <code>pd.read_csv('rapor.csv', skiprows=3)<\/code>.<\/li>\n<li><code>nrows<\/code> (sat\u0131r say\u0131s\u0131): \u00d6zellikle \u00e7ok b\u00fcy\u00fck veri setleriyle \u00e7al\u0131\u015f\u0131rken, dosyan\u0131n tamam\u0131n\u0131 y\u00fcklemek yerine sadece ilk belirli say\u0131da sat\u0131r\u0131 y\u00fcklemek isteyebilirsiniz. Bu, veri setini h\u0131zl\u0131ca ke\u015ffetmek i\u00e7in faydal\u0131d\u0131r: <code>pd.read_csv('buyuk_veri.csv', nrows=1000)<\/code>.<\/li>\n<\/ul>\n<p>Ger\u00e7ek d\u00fcnya senaryolar\u0131nda, bir e-ticaret \u015firketinin ayl\u0131k sat\u0131\u015f raporlar\u0131n\u0131 analiz etti\u011finizi d\u00fc\u015f\u00fcnelim. Bu raporlar genellikle CSV format\u0131nda gelir ve bazen Excel&#8217;den d\u0131\u015fa aktar\u0131ld\u0131\u011f\u0131nda noktal\u0131 virg\u00fclle ayr\u0131lm\u0131\u015f olabilirler. Ayr\u0131ca, raporun ba\u015f\u0131nda a\u00e7\u0131klay\u0131c\u0131 metinler olabilir ve ger\u00e7ek veri 5. sat\u0131rdan ba\u015flayabilir. Bu durumda, <code>read_csv()<\/code> fonksiyonunu a\u015fa\u011f\u0131daki gibi kullanman\u0131z gerekebilir:<\/p>\n<div class=\"code-container\">\n<pre><code>import pandas as pd\n\n# Ayl\u0131k sat\u0131\u015f raporu (noktal\u0131 virg\u00fclle ayr\u0131lm\u0131\u015f, ilk 4 sat\u0131r atlanm\u0131\u015f)\nsatis_df = pd.read_csv('aylik_satislar.csv', sep=';', skiprows=4, encoding='ISO-8859-9')\n\n# Veri \u00e7er\u00e7evesinin ilk birka\u00e7 sat\u0131r\u0131n\u0131 ve s\u00fctun bilgilerini kontrol etme\nprint(satis_df.head())\nprint(satis_df.info())<\/code><\/pre>\n<\/p><\/div>\n<p>Bu \u00f6rnek, <code>read_csv()<\/code>&#8216;nin esnekli\u011fini ve farkl\u0131 senaryolara nas\u0131l adapte edilebilece\u011fini g\u00f6stermektedir. Veri y\u00fckleme s\u00fcrecinde bu parametreleri do\u011fru bir \u015fekilde kullanmak, sonraki analiz ad\u0131mlar\u0131 i\u00e7in sa\u011flam bir temel olu\u015fturman\u0131z\u0131 sa\u011flar. Unutmay\u0131n, veri y\u00fckleme i\u015flemi, veri analizi projenizin ilk ve en kritik ad\u0131m\u0131d\u0131r; bu ad\u0131m\u0131 do\u011fru atmak, t\u00fcm projenin ba\u015far\u0131s\u0131n\u0131 do\u011frudan etkiler.<\/p>\n<h2>Di\u011fer Pop\u00fcler Veri Kaynaklar\u0131ndan Veri Aktar\u0131m\u0131: Excel, JSON ve SQL<\/h2>\n<p>CSV dosyalar\u0131 veri payla\u015f\u0131m\u0131nda yayg\u0131n olsa da, veri analistleri s\u0131kl\u0131kla farkl\u0131 formatlardaki veri kaynaklar\u0131yla da kar\u015f\u0131la\u015f\u0131rlar. Excel elektronik tablolar\u0131, web API&#8217;lerinden gelen JSON verileri ve kurumsal veritabanlar\u0131ndaki SQL verileri, bu pop\u00fcler formatlardan sadece birka\u00e7\u0131d\u0131r. Pandas, bu farkl\u0131 veri kaynaklar\u0131ndan veri y\u00fcklemeyi kolayla\u015ft\u0131ran \u00f6zel fonksiyonlar sunar. Bu b\u00f6l\u00fcmde, bu \u00f6nemli veri kaynaklar\u0131ndan Jupyter Notebook&#8217;a nas\u0131l veri aktaraca\u011f\u0131n\u0131z\u0131 ad\u0131m ad\u0131m inceleyece\u011fiz.<\/p>\n<h3>Excel Dosyalar\u0131n\u0131 Pandas ile Nas\u0131l Okursunuz?<\/h3>\n<p>Microsoft Excel, i\u015f d\u00fcnyas\u0131nda veri depolama ve raporlama i\u00e7in yayg\u0131n olarak kullan\u0131lan bir ara\u00e7t\u0131r. Pandas&#8217;\u0131n <code>read_excel()<\/code> fonksiyonu, Excel dosyalar\u0131n\u0131 (<code>.xls<\/code> ve <code>.xlsx<\/code> uzant\u0131l\u0131) do\u011frudan bir DataFrame&#8217;e y\u00fcklemenizi sa\u011flar. T\u0131pk\u0131 <code>read_csv()<\/code> gibi, bu fonksiyon da bir\u00e7ok parametreye sahiptir.<\/p>\n<div class=\"code-container\">\n<pre><code>import pandas as pd\n\n# \u00d6rnek bir Excel dosyas\u0131n\u0131 y\u00fckleme\n# Varsay\u0131lan olarak ilk sayfay\u0131 okur\ndf_excel = pd.read_excel('finans_verileri.xlsx')\nprint(df_excel.head())<\/code><\/pre>\n<\/p><\/div>\n<p>Excel dosyalar\u0131 genellikle birden fazla \u00e7al\u0131\u015fma sayfas\u0131 (sheet) i\u00e7erebilir. <code>sheet_name<\/code> parametresi ile belirli bir sayfay\u0131 se\u00e7ebilirsiniz. Sayfa ad\u0131n\u0131 veya sayfa indeksini (0&#8217;dan ba\u015flayarak) kullanabilirsiniz:<\/p>\n<div class=\"code-container\">\n<pre><code># Belirli bir sayfay\u0131 ada g\u00f6re y\u00fckleme\ndf_satislar = pd.read_excel('finans_verileri.xlsx', sheet_name='Satis Raporu')\nprint(df_satislar.head())\n\n# Belirli bir sayfay\u0131 indekse g\u00f6re y\u00fckleme (ikinci sayfa)\ndf_giderler = pd.read_excel('finans_verileri.xlsx', sheet_name=1)\nprint(df_giderler.head())<\/code><\/pre>\n<\/p><\/div>\n<p>Di\u011fer faydal\u0131 parametreler \u015funlard\u0131r:<\/p>\n<ul>\n<li><code>header<\/code>: Ba\u015fl\u0131k sat\u0131r\u0131n\u0131n indeksini belirtir (varsay\u0131lan 0).<\/li>\n<li><code>usecols<\/code>: Yaln\u0131zca belirli s\u00fctunlar\u0131 y\u00fcklemek istedi\u011finizde kullan\u0131l\u0131r. S\u00fctun adlar\u0131n\u0131n bir listesini veya s\u00fctun indekslerinin bir listesini ge\u00e7irebilirsiniz: <code>pd.read_excel('veriler.xlsx', usecols=['\u00dcr\u00fcn Ad\u0131', 'Miktar'])<\/code>.<\/li>\n<li><code>skiprows<\/code> ve <code>nrows<\/code>: CSV&#8217;deki gibi \u00e7al\u0131\u015f\u0131r, belirli sat\u0131rlar\u0131 atlaman\u0131za veya sadece belirli say\u0131da sat\u0131r y\u00fcklemenize olanak tan\u0131r.<\/li>\n<\/ul>\n<p>Bir muhasebe departman\u0131n\u0131n ayl\u0131k b\u00fct\u00e7e tablosunu Excel&#8217;den \u00e7ekti\u011finizi ve sadece gelir ve gider s\u00fctunlar\u0131yla ilgilendi\u011finizi d\u00fc\u015f\u00fcn\u00fcn. Ayr\u0131ca, ilk birka\u00e7 sat\u0131rda \u015firket logosu ve rapor ba\u015fl\u0131\u011f\u0131 gibi gereksiz bilgiler olabilir. Bu durumda, <code>read_excel()<\/code> fonksiyonunu a\u015fa\u011f\u0131daki gibi kullanabilirsiniz:<\/p>\n<div class=\"code-container\">\n<pre><code># B\u00fct\u00e7e raporunu y\u00fckleme, ilk 3 sat\u0131r\u0131 atla ve sadece 'Gelir' ve 'Gider' s\u00fctunlar\u0131n\u0131 al\nbutce_df = pd.read_excel('aylik_butce.xlsx', sheet_name='Ana B\u00fct\u00e7e', skiprows=3, usecols=['Gelir', 'Gider'])\nprint(butce_df.head())<\/code><\/pre>\n<\/p><\/div>\n<h3>JSON Verilerini Jupyter Notebook&#8217;a Y\u00fcklemek Ne Kadar Kolay?<\/h3>\n<p>JSON (JavaScript Object Notation), web uygulamalar\u0131 ve API&#8217;ler aras\u0131nda veri al\u0131\u015fveri\u015fi i\u00e7in pop\u00fcler bir formatt\u0131r. Yap\u0131land\u0131r\u0131lm\u0131\u015f ve hiyerar\u015fik verileri temsil etmek i\u00e7in idealdir. Pandas, <code>read_json()<\/code> fonksiyonu ile JSON dosyalar\u0131n\u0131 kolayca DataFrame&#8217;e d\u00f6n\u00fc\u015ft\u00fcrebilir.<\/p>\n<div class=\"code-container\">\n<pre><code>import pandas as pd\n\n# \u00d6rnek bir JSON dosyas\u0131n\u0131 y\u00fckleme\ndf_json = pd.read_json('kullanici_verileri.json')\nprint(df_json.head())<\/code><\/pre>\n<\/p><\/div>\n<p>JSON verileri farkl\u0131 &#8220;oryantasyonlarda&#8221; (orientations) olabilir; bu, JSON dosyas\u0131n\u0131n DataFrame&#8217;e nas\u0131l e\u015flenece\u011fini belirler. En yayg\u0131n oryantasyonlar &#8216;records&#8217; (kay\u0131tlar, her nesne bir sat\u0131r), &#8216;columns&#8217; (s\u00fctunlar, her anahtar bir s\u00fctun) ve &#8216;index&#8217; (indeks, anahtarlar indeks olarak) \u015feklindedir. Varsay\u0131lan olarak Pandas, JSON yap\u0131s\u0131n\u0131 en uygun \u015fekilde tahmin etmeye \u00e7al\u0131\u015f\u0131r, ancak bazen <code>orient<\/code> parametresini belirtmek gerekebilir:<\/p>\n<div class=\"code-container\">\n<pre><code># JSON dosyas\u0131n\u0131 'records' oryantasyonu ile y\u00fckleme\ndf_json_records = pd.read_json('log_kayitlari.json', orient='records')\nprint(df_json_records.head())<\/code><\/pre>\n<\/p><\/div>\n<p>Web servislerinden al\u0131nan API yan\u0131tlar\u0131 genellikle JSON format\u0131ndad\u0131r. Bir sosyal medya analiz projesinde, belirli bir hashtag alt\u0131ndaki g\u00f6nderilerin JSON format\u0131ndaki verilerini \u00e7ekip analiz etmek isteyebilirsiniz. Bu veriler genellikle her g\u00f6nderiyi bir kay\u0131t olarak i\u00e7erir ve <code>read_json()<\/code> ile kolayca bir DataFrame&#8217;e d\u00f6n\u00fc\u015ft\u00fcr\u00fclebilir.<\/p>\n<h3>SQL Veritabanlar\u0131ndan Do\u011frudan Veri \u00c7ekme Y\u00f6ntemleri<\/h3>\n<p>Kurumsal uygulamalar\u0131n \u00e7o\u011fu verilerini ili\u015fkisel veritabanlar\u0131nda (\u00f6rne\u011fin MySQL, PostgreSQL, SQL Server, Oracle) saklar. Pandas, <code>read_sql_query()<\/code> ve <code>read_sql_table()<\/code> fonksiyonlar\u0131 arac\u0131l\u0131\u011f\u0131yla bu veritabanlar\u0131ndan do\u011frudan veri \u00e7ekmenizi sa\u011flar. Bu i\u015flem i\u00e7in genellikle <code>SQLAlchemy<\/code> gibi bir veritaban\u0131 soyutlama k\u00fct\u00fcphanesine ve veritaban\u0131 s\u00fcr\u00fcc\u00fclerine (\u00f6rne\u011fin <code>psycopg2<\/code> PostgreSQL i\u00e7in) ihtiyac\u0131n\u0131z olacakt\u0131r.<\/p>\n<div class=\"code-container\">\n<pre><code>import pandas as pd\nfrom sqlalchemy import create_engine\n\n# Veritaban\u0131 ba\u011flant\u0131 dizesi (\u00f6rnek: PostgreSQL)\n# Ger\u00e7ek uygulamalarda bu bilgileri do\u011frudan kodda tutmaktan ka\u00e7\u0131n\u0131n!\ndb_connection_str = 'postgresql:\/\/kullanici:sifre@host:port\/veritabani_adi'\ndb_connection = create_engine(db_connection_str)\n\n# Bir SQL sorgusu ile veri \u00e7ekme\ntry:\n    df_sql_query = pd.read_sql_query(\"SELECT * FROM musteriler WHERE sehir = '\u0130stanbul'\", db_connection)\n    print(df_sql_query.head())\nexcept Exception as e:\n    print(f\"Veritaban\u0131 ba\u011flant\u0131s\u0131 veya sorgu hatas\u0131: {e}\")\n\n# Do\u011frudan bir tablodan veri \u00e7ekme (t\u00fcm tabloyu)\ntry:\n    df_sql_table = pd.read_sql_table('urunler', db_connection)\n    print(df_sql_table.head())\nexcept Exception as e:\n    print(f\"Veritaban\u0131 ba\u011flant\u0131s\u0131 veya tablo okuma hatas\u0131: {e}\")\n\n# Ba\u011flant\u0131y\u0131 kapatmay\u0131 unutmay\u0131n (gerekiyorsa)\ndb_connection.dispose()<\/code><\/pre>\n<\/p><\/div>\n<p><code>read_sql_query()<\/code>, belirli bir SQL sorgusu (query) sonucunu DataFrame&#8217;e y\u00fcklerken, <code>read_sql_table()<\/code> t\u00fcm bir tabloyu y\u00fcklemek i\u00e7in kullan\u0131l\u0131r. Bu fonksiyonlar, b\u00fcy\u00fck \u00f6l\u00e7ekli veritabanlar\u0131ndan veri \u00e7ekmek i\u00e7in son derece g\u00fc\u00e7l\u00fcd\u00fcr ve i\u015f zekas\u0131 (business intelligence) raporlamalar\u0131nda veya veri ambarlar\u0131ndan (data warehouse) veri al\u0131m\u0131nda s\u0131k\u00e7a kullan\u0131l\u0131r. Bir e-ticaret sitesinin anl\u0131k stok durumunu veya sipari\u015f ge\u00e7mi\u015fini do\u011frudan veritaban\u0131ndan \u00e7ekerek, g\u00fcncel analizler yapabilirsiniz.<\/p>\n<p>Bu farkl\u0131 veri y\u00fckleme y\u00f6ntemleri, Pandas&#8217;\u0131n veri analizi s\u00fcre\u00e7lerinde ne kadar \u00e7ok y\u00f6nl\u00fc oldu\u011funu g\u00f6stermektedir. Hangi formatla kar\u015f\u0131la\u015f\u0131rsan\u0131z kar\u015f\u0131la\u015f\u0131n, Pandas size veriyi Jupyter Notebook ortam\u0131na kolayca aktarman\u0131z i\u00e7in gerekli ara\u00e7lar\u0131 sunar.<\/p>\n<h2>B\u00fcy\u00fck Veri Setleriyle \u00c7al\u0131\u015f\u0131rken Performans\u0131 Art\u0131rma \u0130pu\u00e7lar\u0131 Nelerdir?<\/h2>\n<p>Veri analizi projelerinde her zaman k\u00fc\u00e7\u00fck ve y\u00f6netilebilir veri setleriyle kar\u015f\u0131la\u015fmay\u0131z. Bazen gigabaytlarca, hatta terabaytlarca b\u00fcy\u00fckl\u00fckteki veri setleriyle \u00e7al\u0131\u015fmak zorunda kal\u0131r\u0131z. Bu t\u00fcr b\u00fcy\u00fck veri setlerini do\u011frudan Jupyter Notebook&#8217;a y\u00fcklemek ve i\u015flemek, bellek (RAM) sorunlar\u0131na veya a\u015f\u0131r\u0131 yava\u015flamalara yol a\u00e7abilir. Neyse ki, Pandas, b\u00fcy\u00fck veri setleriyle daha verimli \u00e7al\u0131\u015fmak i\u00e7in baz\u0131 stratejiler ve parametreler sunar. Bu b\u00f6l\u00fcmde, bu ipu\u00e7lar\u0131n\u0131 ve p\u00fcf noktalar\u0131n\u0131 inceleyece\u011fiz.<\/p>\n<h3>1. <code>chunksize<\/code> Parametresi ile Par\u00e7a Par\u00e7a Y\u00fckleme<\/h3>\n<p>En b\u00fcy\u00fck veri seti sorunlar\u0131ndan biri, dosyan\u0131n tamam\u0131n\u0131n belle\u011fe s\u0131\u011fmamas\u0131d\u0131r. Pandas&#8217;\u0131n <code>read_csv()<\/code> ve <code>read_excel()<\/code> gibi fonksiyonlar\u0131nda bulunan <code>chunksize<\/code> parametresi, dosyay\u0131 k\u00fc\u00e7\u00fck par\u00e7alar halinde y\u00fcklemenize olanak tan\u0131r. Bu sayede, her seferinde sadece belirli bir miktar veri belle\u011fe al\u0131n\u0131r, i\u015flenir ve ard\u0131ndan bir sonraki par\u00e7aya ge\u00e7ilir. Bu y\u00f6ntem, \u00f6zellikle dosya boyutunun sistem belle\u011finden b\u00fcy\u00fck oldu\u011fu durumlarda hayati \u00f6neme sahiptir.<\/p>\n<div class=\"code-container\">\n<pre><code>import pandas as pd\n\n# B\u00fcy\u00fck bir CSV dosyas\u0131n\u0131 100.000 sat\u0131rl\u0131k par\u00e7alar halinde y\u00fckleme\nchunk_iterator = pd.read_csv('cok_buyuk_veri.csv', chunksize=100000)\n\n# Her bir par\u00e7ay\u0131 i\u015fleme\ntotal_rows = 0\nfor chunk in chunk_iterator:\n    # Chunk \u00fczerinde analiz veya i\u015fleme yap\u0131n\n    total_rows += len(chunk)\n    # \u00d6rne\u011fin, her chunk'\u0131n ortalamas\u0131n\u0131 hesaplay\u0131p bir listeye ekleyebilirsiniz\n    # print(f\"\u0130\u015flenen chunk boyutu: {len(chunk)} sat\u0131r\")\n\nprint(f\"Toplam i\u015flenen sat\u0131r say\u0131s\u0131: {total_rows}\")<\/code><\/pre>\n<\/p><\/div>\n<p>Bu yakla\u015f\u0131m, t\u00fcm veri setini ayn\u0131 anda belle\u011fe y\u00fcklemek yerine, veriyi &#8220;stream&#8221; (ak\u0131\u015f) halinde i\u015flememize olanak tan\u0131r. Bu sayede, bellek t\u00fcketimi kontrol alt\u0131nda tutulur ve daha b\u00fcy\u00fck veri setleri \u00fczerinde bile analizler yap\u0131labilir.<\/p>\n<h3>2. <code>dtype<\/code> Belirterek Bellek Optimizasyonu<\/h3>\n<p>Pandas, veri setini y\u00fcklerken her s\u00fctunun veri tipini (data type) otomatik olarak tahmin etmeye \u00e7al\u0131\u015f\u0131r. Ancak bu tahmin her zaman en verimli olmayabilir. \u00d6rne\u011fin, bir s\u00fctun sadece 0 ve 1 de\u011ferlerini i\u00e7eriyorsa, Pandas bunu varsay\u0131lan olarak bir tam say\u0131 (integer) olarak de\u011fil, daha geni\u015f bir <code>int64<\/code> olarak atayabilir. Bu da gereksiz bellek t\u00fcketimine yol a\u00e7ar. <code>dtype<\/code> parametresi ile her s\u00fctunun veri tipini manuel olarak belirleyerek bellek kullan\u0131m\u0131n\u0131 \u00f6nemli \u00f6l\u00e7\u00fcde optimize edebilirsiniz.<\/p>\n<div class=\"code-container\">\n<pre><code>import pandas as pd\n\n# S\u00fctun veri tiplerini \u00f6nceden belirleme\n# 'object' genellikle string'ler i\u00e7in kullan\u0131l\u0131r, 'category' daha verimlidir\ndata_types = {\n    'id': 'int32',\n    'kategori': 'category',\n    'fiyat': 'float32',\n    'aktif_mi': 'bool'\n}\n\ndf_optimized = pd.read_csv('urun_listesi.csv', dtype=data_types)\nprint(df_optimized.info(memory_usage='deep'))<\/code><\/pre>\n<\/p><\/div>\n<p>\u00d6zellikle kategorik (categorical) veriler i\u00e7in <code>'category'<\/code> veri tipini kullanmak, benzersiz de\u011fer say\u0131s\u0131 az olan s\u00fctunlarda bellek kullan\u0131m\u0131n\u0131 b\u00fcy\u00fck \u00f6l\u00e7\u00fcde azaltabilir. Ayr\u0131ca, gereksiz yere y\u00fcksek hassasiyetli say\u0131 tipleri (\u00f6rne\u011fin <code>float64<\/code> yerine <code>float32<\/code>) kullanmaktan ka\u00e7\u0131nmak da faydal\u0131d\u0131r.<\/p>\n<h3>3. Yaln\u0131zca \u0130htiya\u00e7 Duyulan S\u00fctunlar\u0131 Y\u00fckleme: <code>usecols<\/code><\/h3>\n<p>B\u00fcy\u00fck veri setleri genellikle analiz i\u00e7in gerekmeyen bir\u00e7ok s\u00fctun i\u00e7erebilir. <code>usecols<\/code> parametresi, sadece ilgilendi\u011finiz s\u00fctunlar\u0131 y\u00fckleyerek bellek kullan\u0131m\u0131n\u0131 ve y\u00fckleme s\u00fcresini azaltman\u0131za olanak tan\u0131r. Bu, \u00f6zellikle veri setinin geni\u015f oldu\u011fu (\u00e7ok fazla s\u00fctun i\u00e7erdi\u011fi) durumlarda \u00e7ok etkilidir.<\/p>\n<div class=\"code-container\">\n<pre><code>import pandas as pd\n\n# Sadece 'Tarih', '\u00dcr\u00fcn Ad\u0131' ve 'Sat\u0131\u015f Miktar\u0131' s\u00fctunlar\u0131n\u0131 y\u00fckleme\ndf_secili_sutunlar = pd.read_csv('genel_satis_raporu.csv', usecols=['Tarih', '\u00dcr\u00fcn Ad\u0131', 'Sat\u0131\u015f Miktar\u0131'])\nprint(df_secili_sutunlar.head())<\/code><\/pre>\n<\/p><\/div>\n<p>Bu y\u00f6ntem, veri setini k\u00fc\u00e7\u00fclterek hem bellekte daha az yer kaplamas\u0131n\u0131 sa\u011flar hem de sonraki i\u015flem ad\u0131mlar\u0131n\u0131 h\u0131zland\u0131r\u0131r.<\/p>\n<h3>4. Bellek Kullan\u0131m\u0131n\u0131 \u0130zleme ve Y\u00f6netme<\/h3>\n<p>Jupyter Notebook&#8217;ta \u00e7al\u0131\u015f\u0131rken, veri \u00e7er\u00e7evelerinizin ne kadar bellek kulland\u0131\u011f\u0131n\u0131 d\u00fczenli olarak kontrol etmek \u00f6nemlidir. <code>df.info(memory_usage='deep')<\/code> komutu, bir DataFrame&#8217;in detayl\u0131 bellek kullan\u0131m\u0131n\u0131 g\u00f6sterir. Bu bilgiyi kullanarak, hangi s\u00fctunlar\u0131n veya veri tiplerinin en \u00e7ok bellek t\u00fcketti\u011fini belirleyebilir ve optimizasyon stratejileri geli\u015ftirebilirsiniz.<\/p>\n<div class=\"code-container\">\n<pre><code>import pandas as pd\n\ndf = pd.read_csv('veri.csv')\nprint(df.info(memory_usage='deep'))<\/code><\/pre>\n<\/p><\/div>\n<p>Gereksiz de\u011fi\u015fkenleri ve DataFrame&#8217;leri bellekten silmek i\u00e7in <code>del df<\/code> komutunu kullanabilir ve ard\u0131ndan Python&#8217;\u0131n \u00e7\u00f6p toplama (garbage collection) mekanizmas\u0131n\u0131 tetiklemek i\u00e7in <code>import gc; gc.collect()<\/code> komutunu \u00e7al\u0131\u015ft\u0131rabilirsiniz. Bu, \u00f6zellikle bir analiz ad\u0131m\u0131n\u0131 tamamlad\u0131ktan ve o DataFrame&#8217;e art\u0131k ihtiyac\u0131n\u0131z kalmad\u0131\u011f\u0131nda faydal\u0131d\u0131r.<\/p>\n<h3>5. Veri \u00d6rneklemesi (Sampling)<\/h3>\n<p>\u00c7ok b\u00fcy\u00fck veri setleriyle \u00e7al\u0131\u015f\u0131rken, bazen t\u00fcm veri setini analiz etmek yerine, ondan rastgele bir \u00f6rnek (sample) almak yeterli olabilir. Bu, \u00f6zellikle h\u0131zl\u0131 ke\u015fif analizleri (exploratory data analysis &#8211; EDA) yaparken veya model prototipleri geli\u015ftirirken zaman ve kaynak tasarrufu sa\u011flar. Pandas&#8217;\u0131n <code>sample()<\/code> metodu veya <code>read_csv()<\/code>&#8216;nin <code>nrows<\/code> parametresi ile bu i\u015flemi ger\u00e7ekle\u015ftirebilirsiniz.<\/p>\n<div class=\"code-container\">\n<pre><code>import pandas as pd\n\n# Sadece ilk 10.000 sat\u0131r\u0131 y\u00fckleme\ndf_sample_nrows = pd.read_csv('buyuk_veri.csv', nrows=10000)\nprint(df_sample_nrows.shape)\n\n# T\u00fcm veri setinin %1'ini rastgele \u00f6rnekleme (e\u011fer tamam\u0131 belle\u011fe s\u0131\u011f\u0131yorsa)\n# df_full = pd.read_csv('buyuk_veri.csv')\n# df_sample_random = df_full.sample(frac=0.01, random_state=42)\n# print(df_sample_random.shape)<\/code><\/pre>\n<\/p><\/div>\n<p>Bu stratejiler, b\u00fcy\u00fck veri setleriyle \u00e7al\u0131\u015f\u0131rken kar\u015f\u0131la\u015f\u0131lan performans ve bellek sorunlar\u0131n\u0131n \u00fcstesinden gelmek i\u00e7in kritik \u00f6neme sahiptir. Do\u011fru stratejiyi se\u00e7mek ve uygulamak, veri analizi projelerinizin verimlili\u011fini ve \u00f6l\u00e7eklenebilirli\u011fini art\u0131racakt\u0131r.<\/p>\n<h2>Veri Y\u00fckleme Esnas\u0131nda Kar\u015f\u0131la\u015f\u0131labilecek Hatalar ve \u00c7\u00f6z\u00fcm Yollar\u0131 Nelerdir?<\/h2>\n<p>Veri analizi s\u00fcrecinin ilk ad\u0131m\u0131 olan veri y\u00fckleme, genellikle basit g\u00f6r\u00fcnse de, \u00e7e\u015fitli beklenmedik hatalarla kar\u015f\u0131la\u015fmak olduk\u00e7a yayg\u0131nd\u0131r. Dosya yollar\u0131ndan kodlama sorunlar\u0131na, bellek s\u0131n\u0131rlamalar\u0131ndan ayr\u0131\u015ft\u0131rma (parsing) hatalar\u0131na kadar bir\u00e7ok farkl\u0131 problem ortaya \u00e7\u0131kabilir. Bu b\u00f6l\u00fcmde, Pandas ile veri y\u00fcklerken s\u0131k\u00e7a kar\u015f\u0131la\u015f\u0131lan hatalar\u0131 ve bu hatalar\u0131 nas\u0131l te\u015fhis edip \u00e7\u00f6zebilece\u011finizi detayl\u0131 bir \u015fekilde ele alaca\u011f\u0131z.<\/p>\n<h3>1. <code>FileNotFoundError<\/code>: Dosya Bulunamad\u0131 Hatas\u0131<\/h3>\n<p>Bu, en s\u0131k kar\u015f\u0131la\u015f\u0131lan hatalardan biridir ve genellikle dosya yolunun yanl\u0131\u015f belirtilmesi veya dosyan\u0131n belirtilen konumda bulunmamas\u0131 durumunda ortaya \u00e7\u0131kar. Jupyter Notebook, genellikle ba\u015flat\u0131ld\u0131\u011f\u0131 dizini (directory) \u00e7al\u0131\u015fma dizini olarak kabul eder. E\u011fer dosyan\u0131z farkl\u0131 bir yerdeyse, ya dosyan\u0131n tam yolunu belirtmeli ya da dosyan\u0131n bulundu\u011fu dizine gitmelisiniz.<\/p>\n<p><strong>\u00d6rnek Hata Mesaj\u0131:<\/strong><\/p>\n<div class=\"code-container\">\n<pre><code>FileNotFoundError: [Errno 2] No such file or directory: 'yanlis_dosya_adi.csv'<\/code><\/pre>\n<\/p><\/div>\n<p><strong>\u00c7\u00f6z\u00fcm Yollar\u0131:<\/strong><\/p>\n<ul>\n<li><strong>Dosya Yolunu Kontrol Edin:<\/strong> Dosya ad\u0131n\u0131 ve uzant\u0131s\u0131n\u0131 do\u011fru yazd\u0131\u011f\u0131n\u0131zdan emin olun. \u00d6rne\u011fin, <code>veri.csv<\/code> yerine <code>veri.CSV<\/code> yazm\u0131\u015f olabilirsiniz.<\/li>\n<li><strong>Tam Yolu Belirtin:<\/strong> Dosyan\u0131n bilgisayar\u0131n\u0131zdaki tam yolunu (\u00f6rne\u011fin, Windows&#8217;ta <code>C:\\Kullanicilar\\KullaniciAdi\\Belgeler\\veri.csv<\/code> veya Linux\/macOS&#8217;ta <code>\/home\/kullanici\/belgeler\/veri.csv<\/code>) kullan\u0131n.<\/li>\n<li><strong>\u00c7al\u0131\u015fma Dizinini Kontrol Edin:<\/strong> Jupyter Notebook&#8217;ta <code>import os; print(os.getcwd())<\/code> komutunu \u00e7al\u0131\u015ft\u0131rarak mevcut \u00e7al\u0131\u015fma dizininizi g\u00f6rebilirsiniz. Dosyan\u0131z\u0131 bu dizine ta\u015f\u0131yabilir veya <code>os.chdir('yeni_dizin_yolu')<\/code> ile \u00e7al\u0131\u015fma dizinini de\u011fi\u015ftirebilirsiniz.<\/li>\n<li><strong>Dosyan\u0131n Mevcut Oldu\u011fundan Emin Olun:<\/strong> Dosyan\u0131n ger\u00e7ekten o konumda olup olmad\u0131\u011f\u0131n\u0131 manuel olarak kontrol edin.<\/li>\n<\/ul>\n<h3>2. <code>UnicodeDecodeError<\/code>: Kodlama Hatas\u0131<\/h3>\n<p>Bu hata, dosyan\u0131n kaydedildi\u011fi karakter kodlamas\u0131 (encoding) ile Pandas&#8217;\u0131n dosyay\u0131 okumaya \u00e7al\u0131\u015ft\u0131\u011f\u0131 kodlaman\u0131n uyu\u015fmamas\u0131 durumunda meydana gelir. \u00d6zellikle T\u00fcrk\u00e7e karakterler veya \u00f6zel semboller i\u00e7eren dosyalarda s\u0131k\u00e7a g\u00f6r\u00fcl\u00fcr.<\/p>\n<p><strong>\u00d6rnek Hata Mesaj\u0131:<\/strong><\/p>\n<div class=\"code-container\">\n<pre><code>UnicodeDecodeError: 'utf-8' codec can't decode byte 0xfc in position 10: invalid start byte<\/code><\/pre>\n<\/p><\/div>\n<p><strong>\u00c7\u00f6z\u00fcm Yollar\u0131:<\/strong><\/p>\n<ul>\n<li><strong><code>encoding<\/code> Parametresini Kullan\u0131n:<\/strong> <code>pd.read_csv()<\/code> veya <code>pd.read_excel()<\/code> fonksiyonlar\u0131nda <code>encoding<\/code> parametresini kullanarak do\u011fru kodlamay\u0131 belirtin. Yayg\u0131n kodlamalar aras\u0131nda <code>'latin-1'<\/code>, <code>'ISO-8859-1'<\/code>, <code>'cp1252'<\/code> ve T\u00fcrk\u00e7e i\u00e7in <code>'ISO-8859-9'<\/code> bulunur. Deneme yan\u0131lma yoluyla do\u011fru olan\u0131 bulmaya \u00e7al\u0131\u015fabilirsiniz.<\/li>\n<li><strong>Notepad++ veya Di\u011fer Metin D\u00fczenleyicileri ile Kontrol Edin:<\/strong> Dosyay\u0131 bir metin d\u00fczenleyicide a\u00e7arak dosyan\u0131n hangi kodlamayla kaydedildi\u011fini g\u00f6rebilirsiniz.<\/li>\n<\/ul>\n<h3>3. <code>ParserError<\/code> veya <code>CParserError<\/code>: Ayr\u0131\u015ft\u0131rma Hatas\u0131<\/h3>\n<p>Bu hatalar, Pandas&#8217;\u0131n dosya yap\u0131s\u0131n\u0131 do\u011fru bir \u015fekilde anlayamamas\u0131 durumunda ortaya \u00e7\u0131kar. Genellikle yanl\u0131\u015f ay\u0131r\u0131c\u0131 (separator), yanl\u0131\u015f ba\u015fl\u0131k sat\u0131r\u0131 veya bozuk veri format\u0131 nedeniyle olu\u015fur.<\/p>\n<p><strong>\u00d6rnek Hata Mesaj\u0131:<\/strong><\/p>\n<div class=\"code-container\">\n<pre><code>pandas.errors.ParserError: Error tokenizing data. C error: Expected 1 fields in line 3, saw 2<\/code><\/pre>\n<\/p><\/div>\n<p><strong>\u00c7\u00f6z\u00fcm Yollar\u0131:<\/strong><\/p>\n<ul>\n<li><strong><code>sep<\/code> Parametresini Ayarlay\u0131n:<\/strong> Dosyan\u0131z\u0131n virg\u00fcl yerine noktal\u0131 virg\u00fcl (<code>;<\/code>), sekme (<code>\\t<\/code>) veya ba\u015fka bir karakterle ayr\u0131lm\u0131\u015f olup olmad\u0131\u011f\u0131n\u0131 kontrol edin ve <code>sep<\/code> parametresini buna g\u00f6re ayarlay\u0131n.<\/li>\n<li><strong><code>header<\/code> Parametresini Kontrol Edin:<\/strong> E\u011fer dosyan\u0131z\u0131n ba\u015fl\u0131k sat\u0131r\u0131 yoksa <code>header=None<\/code> olarak ayarlay\u0131n veya ba\u015fl\u0131k sat\u0131r\u0131 farkl\u0131 bir sat\u0131rdaysa do\u011fru indeksi belirtin.<\/li>\n<li><strong><code>skiprows<\/code> Parametresini Kullan\u0131n:<\/strong> Dosyan\u0131n ba\u015f\u0131nda gereksiz metinler veya bozuk sat\u0131rlar varsa, bu sat\u0131rlar\u0131 atlamak i\u00e7in <code>skiprows<\/code> parametresini kullan\u0131n.<\/li>\n<li><strong><code>error_bad_lines=False<\/code> (Eski S\u00fcr\u00fcmlerde):<\/strong> Pandas&#8217;\u0131n eski s\u00fcr\u00fcmlerinde, bozuk sat\u0131rlar\u0131 g\u00f6z ard\u0131 etmek i\u00e7in bu parametre kullan\u0131labilirdi. Ancak, bu parametre art\u0131k \u00f6nerilmiyor ve gelecekte kald\u0131r\u0131lacak. Bunun yerine, <code>on_bad_lines='skip'<\/code> veya <code>on_bad_lines='warn'<\/code> gibi yeni parametreler kullan\u0131labilir.<\/li>\n<li><strong>Dosyay\u0131 \u0130nceleyin:<\/strong> Hata mesaj\u0131nda belirtilen sat\u0131r numaras\u0131n\u0131 veya \u00e7evresini bir metin d\u00fczenleyicide a\u00e7arak sorunu manuel olarak tespit etmeye \u00e7al\u0131\u015f\u0131n.<\/li>\n<\/ul>\n<h3>4. <code>MemoryError<\/code>: Bellek Hatas\u0131<\/h3>\n<p>\u00d6zellikle b\u00fcy\u00fck veri setlerini y\u00fcklemeye \u00e7al\u0131\u015f\u0131rken, sistem belle\u011finizin (RAM) yetersiz kalmas\u0131 durumunda bu hatay\u0131 alabilirsiniz.<\/p>\n<p><strong>\u00d6rnek Hata Mesaj\u0131:<\/strong><\/p>\n<div class=\"code-container\">\n<pre><code>MemoryError: Unable to allocate ... bytes for an array with shape (...) and data type ...<\/code><\/pre>\n<\/p><\/div>\n<p><strong>\u00c7\u00f6z\u00fcm Yollar\u0131:<\/strong><\/p>\n<ul>\n<li><strong><code>chunksize<\/code> Kullan\u0131n:<\/strong> Veriyi par\u00e7a par\u00e7a y\u00fckleyerek bellek kullan\u0131m\u0131n\u0131 azalt\u0131n.<\/li>\n<li><strong><code>usecols<\/code> ile S\u00fctunlar\u0131 S\u0131n\u0131rlay\u0131n:<\/strong> Yaln\u0131zca ihtiyac\u0131n\u0131z olan s\u00fctunlar\u0131 y\u00fckleyin.<\/li>\n<li><strong><code>dtype<\/code> ile Veri Tiplerini Optimize Edin:<\/strong> S\u00fctunlara daha verimli veri tipleri atay\u0131n (\u00f6rne\u011fin, <code>int64<\/code> yerine <code>int32<\/code>, <code>object<\/code> yerine <code>category<\/code>).<\/li>\n<li><strong>Daha Fazla Bellek Kullan\u0131n:<\/strong> E\u011fer m\u00fcmk\u00fcnse, sisteminize daha fazla RAM eklemeyi d\u00fc\u015f\u00fcn\u00fcn veya daha g\u00fc\u00e7l\u00fc bir makinede \u00e7al\u0131\u015f\u0131n.<\/li>\n<li><strong>Veri \u00d6rneklemesi Yap\u0131n:<\/strong> T\u00fcm veri setini y\u00fcklemek yerine, k\u00fc\u00e7\u00fck bir \u00f6rnekle \u00e7al\u0131\u015f\u0131n (<code>nrows<\/code> parametresi).<\/li>\n<\/ul>\n<h3>5. <code>ValueError<\/code>: De\u011fer Hatas\u0131<\/h3>\n<p>Bu hata, bir s\u00fctundaki verilerin beklenen veri tipiyle uyu\u015fmamas\u0131 durumunda ortaya \u00e7\u0131kabilir. \u00d6rne\u011fin, say\u0131sal bir s\u00fctunda metin de\u011ferlerinin bulunmas\u0131.<\/p>\n<p><strong>\u00d6rnek Hata Mesaj\u0131:<\/strong><\/p>\n<div class=\"code-container\">\n<pre><code>ValueError: could not convert string to float: 'N\/A'<\/code><\/pre>\n<\/p><\/div>\n<p><strong>\u00c7\u00f6z\u00fcm Yollar\u0131:<\/strong><\/p>\n<ul>\n<li><strong><code>na_values<\/code> Parametresini Kullan\u0131n:<\/strong> Eksik de\u011ferleri temsil eden metinleri (\u00f6rne\u011fin, &#8216;N\/A&#8217;, &#8216;NaN&#8217;, &#8216;-&#8216;) belirtmek i\u00e7in <code>na_values<\/code> parametresini kullan\u0131n. Pandas bu de\u011ferleri otomatik olarak <code>NaN<\/code> (Not a Number) olarak yorumlayacakt\u0131r: <code>pd.read_csv('veri.csv', na_values=['N\/A', 'Yok'])<\/code>.<\/li>\n<li><strong>Veri Temizli\u011fi (Data Cleaning):<\/strong> Y\u00fckledikten sonra ilgili s\u00fctunlar\u0131 manuel olarak inceleyin ve hatal\u0131 de\u011ferleri temizleyin veya d\u00f6n\u00fc\u015ft\u00fcr\u00fcn.<\/li>\n<\/ul>\n<p>Bu hatalar\u0131 anlamak ve do\u011fru \u00e7\u00f6z\u00fcm yollar\u0131n\u0131 uygulamak, veri y\u00fckleme s\u00fcrecinizi \u00e7ok daha verimli hale getirecek ve veri analizi projenizin sorunsuz ilerlemesini sa\u011flayacakt\u0131r. Hata mesajlar\u0131n\u0131 dikkatlice okumak ve Google&#8217;da arama yapmak, \u00e7o\u011fu zaman \u00e7\u00f6z\u00fcm bulman\u0131n ilk ad\u0131m\u0131d\u0131r.<\/p>\n<h2>Sonu\u00e7 ve Gelecek Ad\u0131mlar: Veri Y\u00fcklemeden Sonraki S\u00fcre\u00e7ler Nelerdir?<\/h2>\n<p>Bu makale boyunca, Pandas k\u00fct\u00fcphanesini ve Jupyter Notebook ortam\u0131n\u0131 kullanarak farkl\u0131 formatlardaki veri setlerini (CSV, Excel, JSON, SQL) nas\u0131l y\u00fckleyece\u011finizi, bu s\u00fcre\u00e7te kar\u015f\u0131la\u015fabilece\u011finiz yayg\u0131n hatalar\u0131 ve b\u00fcy\u00fck veri setleriyle \u00e7al\u0131\u015f\u0131rken performans\u0131 art\u0131rma stratejilerini detayl\u0131 bir \u015fekilde inceledik. Veri analizi yolculu\u011funuzun bu ilk ve kritik ad\u0131m\u0131n\u0131 sa\u011flam bir \u015fekilde atmak, projenizin ba\u015far\u0131s\u0131 i\u00e7in temel bir gerekliliktir. Art\u0131k ham veriyi g\u00fcvenli ve verimli bir \u015fekilde \u00e7al\u0131\u015fma ortam\u0131n\u0131za aktarabiliyorsunuz, peki bundan sonra ne geliyor?<\/p>\n<p>Veri y\u00fckleme, veri analizi s\u00fcrecinin sadece ba\u015flang\u0131c\u0131d\u0131r. Y\u00fckledi\u011finiz ham veri genellikle do\u011frudan analiz veya modelleme i\u00e7in uygun de\u011fildir. Bu noktadan sonra, bir dizi \u00f6nemli ad\u0131m sizi bekler:<\/p>\n<ol>\n<li><strong>Veri Ke\u015ffi ve Anlama (Exploratory Data Analysis &#8211; EDA):<\/strong> Y\u00fckledi\u011finiz veriyi anlamak i\u00e7in ilk birka\u00e7 sat\u0131r\u0131 (<code>df.head()<\/code>), veri tiplerini (<code>df.info()<\/code>), istatistiksel \u00f6zetleri (<code>df.describe()<\/code>) ve eksik de\u011ferleri (<code>df.isnull().sum()<\/code>) inceleyeceksiniz. Bu ad\u0131m, verinin yap\u0131s\u0131n\u0131, kalitesini ve potansiyel sorunlar\u0131n\u0131 anlaman\u0131za yard\u0131mc\u0131 olur. G\u00f6rselle\u015ftirmeler (histogramlar, sa\u00e7\u0131l\u0131m grafikleri vb.) bu a\u015famada \u00e7ok de\u011ferlidir.<\/li>\n<li><strong>Veri Temizli\u011fi ve \u00d6n \u0130\u015fleme (Data Cleaning and Preprocessing):<\/strong> Bu a\u015fama, veri setinizi analiz i\u00e7in haz\u0131r hale getirmeyi i\u00e7erir. Eksik de\u011ferleri doldurma (<code>df.fillna()<\/code>) veya silme (<code>df.dropna()<\/code>), ayk\u0131r\u0131 de\u011ferleri (outliers) tespit etme ve i\u015fleme, veri tiplerini d\u00f6n\u00fc\u015ft\u00fcrme, yinelenen kay\u0131tlar\u0131 (duplicates) kald\u0131rma (<code>df.drop_duplicates()<\/code>) ve tutars\u0131zl\u0131klar\u0131 d\u00fczeltme gibi i\u015flemler bu b\u00f6l\u00fcmde yer al\u0131r. \u00d6rne\u011fin, bir s\u00fctundaki metin verilerini standart bir formata d\u00f6n\u00fc\u015ft\u00fcrmek veya say\u0131sal de\u011ferleri \u00f6l\u00e7eklendirmek (scaling) gerekebilir.<\/li>\n<li><strong>Veri Manip\u00fclasyonu ve D\u00f6n\u00fc\u015ft\u00fcrme (Data Manipulation and Transformation):<\/strong> Analiz hedeflerinize ula\u015fmak i\u00e7in mevcut verileri yeni formlara d\u00f6n\u00fc\u015ft\u00fcrmeniz gerekebilir. Bu, yeni s\u00fctunlar olu\u015fturma, mevcut s\u00fctunlar\u0131 birle\u015ftirme, verileri gruplama (<code>df.groupby()<\/code>), birle\u015ftirme (<code>pd.merge()<\/code>) veya pivot tablolar olu\u015fturma gibi i\u015flemleri i\u00e7erir. \u00d6rne\u011fin, farkl\u0131 tablolardaki m\u00fc\u015fteri ve sipari\u015f bilgilerini birle\u015ftirmek veya ayl\u0131k toplam sat\u0131\u015flar\u0131 hesaplamak bu a\u015famada yap\u0131l\u0131r.<\/li>\n<li><strong>Veri G\u00f6rselle\u015ftirme (Data Visualization):<\/strong> Verilerdeki kal\u0131plar\u0131, e\u011filimleri ve ili\u015fkileri daha iyi anlamak i\u00e7in g\u00f6rselle\u015ftirmelerden faydalanmak \u00f6nemlidir. Matplotlib ve Seaborn gibi k\u00fct\u00fcphanelerle grafikler, \u00e7izelgeler ve interaktif panolar olu\u015fturarak i\u00e7g\u00f6r\u00fclerinizi daha etkili bir \u015fekilde sunabilirsiniz.<\/li>\n<li><strong>Model Olu\u015fturma ve Analiz (Modeling and Analysis):<\/strong> Temizlenmi\u015f ve haz\u0131rlanm\u0131\u015f verilerle istatistiksel modeller olu\u015fturabilir, makine \u00f6\u011frenimi algoritmalar\u0131 uygulayabilir veya hipotez testleri yapabilirsiniz. Bu, tahmine dayal\u0131 modeller (predictive models), s\u0131n\u0131fland\u0131rma (classification), k\u00fcmeleme (clustering) veya regresyon (regression) analizleri gibi daha ileri d\u00fczey konular\u0131 kapsar.<\/li>\n<\/ol>\n<p>G\u00f6rd\u00fc\u011f\u00fcn\u00fcz gibi, veri y\u00fckleme sadece bir ba\u015flang\u0131\u00e7 noktas\u0131d\u0131r. Ancak bu ba\u015flang\u0131c\u0131n sa\u011flam olmas\u0131, t\u00fcm s\u00fcrecin verimlili\u011fi ve do\u011frulu\u011fu a\u00e7\u0131s\u0131ndan kritik \u00f6neme sahiptir. Pandas ve Jupyter Notebook&#8217;un sundu\u011fu esneklik ve g\u00fc\u00e7le, veri analizi yolculu\u011funuzda kar\u015f\u0131la\u015faca\u011f\u0131n\u0131z her ad\u0131m\u0131 ba\u015far\u0131yla tamamlayabilir ve verilerden de\u011ferli i\u00e7g\u00f6r\u00fcler elde edebilirsiniz. Pratik yaparak ve farkl\u0131 veri setleriyle deneyler yaparak bu becerilerinizi s\u00fcrekli geli\u015ftirmeniz, veri bilimi alan\u0131nda yetkinli\u011finizi art\u0131rman\u0131n anahtar\u0131d\u0131r.<\/p>\n<h3>S\u0131k\u00e7a Sorulan Sorular (SSS)<\/h3>\n<dl>\n<dt><strong>1. Jupyter Notebook&#8217;ta bir dosyay\u0131 y\u00fcklerken <code>FileNotFoundError<\/code> al\u0131rsam ne yapmal\u0131y\u0131m?<\/strong><\/dt>\n<dd>Bu hata genellikle dosyan\u0131n yolu veya ad\u0131 yanl\u0131\u015f oldu\u011funda ortaya \u00e7\u0131kar. \u00d6ncelikle dosya ad\u0131n\u0131 ve uzant\u0131s\u0131n\u0131 do\u011fru yazd\u0131\u011f\u0131n\u0131zdan emin olun. Ard\u0131ndan, dosyan\u0131n Jupyter Notebook&#8217;un \u00e7al\u0131\u015ft\u0131\u011f\u0131 dizinde olup olmad\u0131\u011f\u0131n\u0131 kontrol edin (<code>import os; print(os.getcwd())<\/code> komutuyla). E\u011fer farkl\u0131 bir dizindeyse, dosyan\u0131n tam yolunu belirtmeli veya \u00e7al\u0131\u015fma dizininizi de\u011fi\u015ftirmelisiniz.<\/dd>\n<dt><strong>2. B\u00fcy\u00fck bir CSV dosyas\u0131n\u0131 belle\u011fe s\u0131\u011fd\u0131ram\u0131yorum, \u00e7\u00f6z\u00fcm nedir?<\/strong><\/dt>\n<dd>Bellek hatalar\u0131 (<code>MemoryError<\/code>) b\u00fcy\u00fck veri setlerinde yayg\u0131nd\u0131r. \u00c7\u00f6z\u00fcm olarak <code>pd.read_csv()<\/code> fonksiyonunun <code>chunksize<\/code> parametresini kullanarak dosyay\u0131 par\u00e7a par\u00e7a y\u00fckleyebilir, <code>usecols<\/code> parametresiyle sadece ihtiyac\u0131n\u0131z olan s\u00fctunlar\u0131 se\u00e7ebilir veya <code>dtype<\/code> parametresiyle s\u00fctunlar\u0131n veri tiplerini daha verimli hale getirebilirsiniz. Ayr\u0131ca, <code>nrows<\/code> parametresiyle sadece dosyan\u0131n ilk birka\u00e7 sat\u0131r\u0131n\u0131 y\u00fckleyerek \u00f6rneklemeyle \u00e7al\u0131\u015fabilirsiniz.<\/dd>\n<dt><strong>3. T\u00fcrk\u00e7e karakter i\u00e7eren bir CSV dosyas\u0131n\u0131 y\u00fcklerken neden hata al\u0131yorum?<\/strong><\/dt>\n<dd>Bu durum genellikle kodlama (encoding) sorunlar\u0131ndan kaynaklan\u0131r. Dosyan\u0131z\u0131n &#8216;UTF-8&#8217; d\u0131\u015f\u0131nda bir kodlamayla (\u00f6rne\u011fin &#8216;ISO-8859-9&#8217; veya &#8216;latin-1&#8217;) kaydedilmi\u015f olmas\u0131 muhtemeldir. <code>pd.read_csv()<\/code> fonksiyonunda <code>encoding='ISO-8859-9'<\/code> veya <code>encoding='latin-1'<\/code> gibi farkl\u0131 kodlamalar\u0131 deneyerek sorunu \u00e7\u00f6zebilirsiniz.<\/dd>\n<dt><strong>4. Excel dosyas\u0131n\u0131n belirli bir sayfas\u0131n\u0131 veya sadece belirli s\u00fctunlar\u0131n\u0131 nas\u0131l y\u00fckleyebilirim?<\/strong><\/dt>\n<dd><code>pd.read_excel()<\/code> fonksiyonunda <code>sheet_name<\/code> parametresini kullanarak sayfa ad\u0131n\u0131 veya sayfa indeksini belirtebilirsiniz (\u00f6rne\u011fin, <code>sheet_name='Rapor'<\/code> veya <code>sheet_name=1<\/code>). Belirli s\u00fctunlar\u0131 y\u00fcklemek i\u00e7in ise <code>usecols<\/code> parametresine s\u00fctun adlar\u0131n\u0131n bir listesini ge\u00e7irebilirsiniz (\u00f6rne\u011fin, <code>usecols=['\u00dcr\u00fcn', 'Fiyat']<\/code>).<\/dd>\n<dt><strong>5. SQL veritaban\u0131ndan veri \u00e7ekerken nelere dikkat etmeliyim?<\/strong><\/dt>\n<dd>SQL veritabanlar\u0131ndan veri \u00e7ekerken, \u00f6ncelikle veritaban\u0131 ba\u011flant\u0131 dizesini (connection string) do\u011fru bir \u015fekilde yap\u0131land\u0131rman\u0131z gerekir. Bu dize kullan\u0131c\u0131 ad\u0131, \u015fifre, host, port ve veritaban\u0131 ad\u0131n\u0131 i\u00e7erir. G\u00fcvenlik nedeniyle hassas bilgileri (\u015fifreler gibi) do\u011frudan kod i\u00e7inde tutmaktan ka\u00e7\u0131nmal\u0131, bunun yerine ortam de\u011fi\u015fkenleri (environment variables) kullanmal\u0131s\u0131n\u0131z. Ayr\u0131ca, <code>SQLAlchemy<\/code> gibi bir k\u00fct\u00fcphane ile veritaban\u0131 motorunu olu\u015fturmal\u0131 ve <code>pd.read_sql_query()<\/code> veya <code>pd.read_sql_table()<\/code> fonksiyonlar\u0131n\u0131 kullanmal\u0131s\u0131n\u0131z. Ba\u011flant\u0131 hatalar\u0131 i\u00e7in veritaban\u0131 sunucusunun eri\u015filebilirli\u011fini ve kimlik bilgilerinizin do\u011frulu\u011funu kontrol etmelisiniz.<\/dd>\n<\/dl>\n<p>#VeriAnalizi #Pandas #JupyterNotebook #VeriY\u00fckleme #Python #B\u00fcy\u00fckVeri<\/p>\n<div class=\"github-example-link\"><strong>\u00d6rnek kod:<\/strong> <a href=\"https:\/\/github.com\/fatihsoysalcom\/pandas-load-datasets-csv-json\" target=\"_blank\" rel=\"noopener noreferrer\">github.com\/fatihsoysalcom\/pandas-load-datasets-csv-json<\/a><\/div>\n","protected":false},"excerpt":{"rendered":"Veri analizi d\u00fcnyas\u0131na ad\u0131m atan her profesyonelin ve merakl\u0131n\u0131n kar\u015f\u0131la\u015ft\u0131\u011f\u0131 ilk ve en kritik ad\u0131mlardan biri, ham veriyi \u00e7al\u0131\u015fma ortam\u0131na do\u011fru bir \u015fekilde aktarmakt\u0131r.","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[1],"tags":[],"class_list":{"0":"post-43964","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-genel","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Jupyter Notebook&#039;ta Pandas Kullanarak Veri Seti Y\u00fckleme Rehberi - Kodlar\u0131n Gizemli D\u00fcnyas\u0131<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/jupyter-notebookta-pandas-kullanarak-veri-seti-yukleme-rehberi\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Jupyter Notebook&#039;ta Pandas Kullanarak Veri Seti Y\u00fckleme Rehberi\" \/>\n<meta property=\"og:description\" content=\"Veri analizi d\u00fcnyas\u0131na ad\u0131m atan her profesyonelin ve merakl\u0131n\u0131n kar\u015f\u0131la\u015ft\u0131\u011f\u0131 ilk ve en kritik ad\u0131mlardan biri, ham veriyi \u00e7al\u0131\u015fma ortam\u0131na do\u011fru bir \u015fekilde aktarmakt\u0131r.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/jupyter-notebookta-pandas-kullanarak-veri-seti-yukleme-rehberi\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2026-08-09T18:03:48+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-08-09T18:04:12+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"31 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/jupyter-notebookta-pandas-kullanarak-veri-seti-yukleme-rehberi\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/jupyter-notebookta-pandas-kullanarak-veri-seti-yukleme-rehberi\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Jupyter Notebook&#8217;ta Pandas Kullanarak Veri Seti Y\u00fckleme Rehberi\",\"datePublished\":\"2026-08-09T18:03:48+00:00\",\"dateModified\":\"2026-08-09T18:04:12+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/jupyter-notebookta-pandas-kullanarak-veri-seti-yukleme-rehberi\/\"},\"wordCount\":5154,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/jupyter-notebookta-pandas-kullanarak-veri-seti-yukleme-rehberi\/#respond\"]}],\"copyrightYear\":\"2026\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/jupyter-notebookta-pandas-kullanarak-veri-seti-yukleme-rehberi\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/jupyter-notebookta-pandas-kullanarak-veri-seti-yukleme-rehberi\/\",\"name\":\"Jupyter Notebook'ta Pandas Kullanarak Veri Seti Y\u00fckleme Rehberi - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2026-08-09T18:03:48+00:00\",\"dateModified\":\"2026-08-09T18:04:12+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/jupyter-notebookta-pandas-kullanarak-veri-seti-yukleme-rehberi\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/jupyter-notebookta-pandas-kullanarak-veri-seti-yukleme-rehberi\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/jupyter-notebookta-pandas-kullanarak-veri-seti-yukleme-rehberi\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Jupyter Notebook&#8217;ta Pandas Kullanarak Veri Seti Y\u00fckleme Rehberi\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Jupyter Notebook'ta Pandas Kullanarak Veri Seti Y\u00fckleme Rehberi - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/jupyter-notebookta-pandas-kullanarak-veri-seti-yukleme-rehberi\/","og_locale":"tr_TR","og_type":"article","og_title":"Jupyter Notebook'ta Pandas Kullanarak Veri Seti Y\u00fckleme Rehberi","og_description":"Veri analizi d\u00fcnyas\u0131na ad\u0131m atan her profesyonelin ve merakl\u0131n\u0131n kar\u015f\u0131la\u015ft\u0131\u011f\u0131 ilk ve en kritik ad\u0131mlardan biri, ham veriyi \u00e7al\u0131\u015fma ortam\u0131na do\u011fru bir \u015fekilde aktarmakt\u0131r.","og_url":"https:\/\/fatihsoysal.com\/blog\/jupyter-notebookta-pandas-kullanarak-veri-seti-yukleme-rehberi\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2026-08-09T18:03:48+00:00","article_modified_time":"2026-08-09T18:04:12+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"31 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/jupyter-notebookta-pandas-kullanarak-veri-seti-yukleme-rehberi\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/jupyter-notebookta-pandas-kullanarak-veri-seti-yukleme-rehberi\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Jupyter Notebook&#8217;ta Pandas Kullanarak Veri Seti Y\u00fckleme Rehberi","datePublished":"2026-08-09T18:03:48+00:00","dateModified":"2026-08-09T18:04:12+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/jupyter-notebookta-pandas-kullanarak-veri-seti-yukleme-rehberi\/"},"wordCount":5154,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/jupyter-notebookta-pandas-kullanarak-veri-seti-yukleme-rehberi\/#respond"]}],"copyrightYear":"2026","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/jupyter-notebookta-pandas-kullanarak-veri-seti-yukleme-rehberi\/","url":"https:\/\/fatihsoysal.com\/blog\/jupyter-notebookta-pandas-kullanarak-veri-seti-yukleme-rehberi\/","name":"Jupyter Notebook'ta Pandas Kullanarak Veri Seti Y\u00fckleme Rehberi - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2026-08-09T18:03:48+00:00","dateModified":"2026-08-09T18:04:12+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/jupyter-notebookta-pandas-kullanarak-veri-seti-yukleme-rehberi\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/jupyter-notebookta-pandas-kullanarak-veri-seti-yukleme-rehberi\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/jupyter-notebookta-pandas-kullanarak-veri-seti-yukleme-rehberi\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Jupyter Notebook&#8217;ta Pandas Kullanarak Veri Seti Y\u00fckleme Rehberi"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/43964","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=43964"}],"version-history":[{"count":1,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/43964\/revisions"}],"predecessor-version":[{"id":43965,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/43964\/revisions\/43965"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=43964"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=43964"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=43964"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}