Skip to content

Commit 00613c9

Browse files
committed
turkish translation
1 parent f063e13 commit 00613c9

File tree

1 file changed

+337
-0
lines changed
  • 2-Working-With-Data/08-data-preparation/translations

1 file changed

+337
-0
lines changed
Lines changed: 337 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,337 @@
1+
# Veri Üzerinde Çalışmak: Verinin Hazırlanması
2+
3+
|![ Sketchnote by [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/08-DataPreparation.png)|
4+
|:---:|
5+
|Veriyi Hazırlamak - _Sketchnote by [@nitya](https://twitter.com/nitya)_ |
6+
7+
## [Ders Öncesi Kısa Sınavı](https://red-water-0103e7a0f.azurestaticapps.net/quiz/14)
8+
9+
10+
11+
Veriye bağlı olarak ham veriler, analiz ve modellemede zorluk çıkarabilecek bazı tutarsızlıklar içerebilir. Başka bir deyişle bu veriler "kirli" olarak sınıflandırılabilir ve temizlenmeleri gerekir. Bu derste kayıp, tutarsız ve eksik verilerle ilgili zorlukların üstesinden gelmek için verileri temizleme ve dönüştürne tekniklerine odaklanacağız. Bu derste işlenen konular Python programlama dili ve Pandas kitaplığını kullanacak ve [bu dizindeki](notebook.ipnyb) not defterinde gösterilecektir.
12+
13+
## Veriyi temizlemenin önemi
14+
15+
- **Kullanım kolaylığı ve yeniden kullanılabilirlik**: Veriler düzgün bir şekilde düzenlendiğinde ve normalize edildiğinde, veri içinde arama yapmak, veriyi kullanmak ve başkalarıyla paylaşmak daha kolaydır.
16+
17+
- **Tutarlılık**: Veri bilimi genellikle, farklı kaynaklardan gelen veri setlerinin bir araya getirilmesinin gerektiği birden fazla veri setiyle çalışmayı gerektirir. Her bir veri setinin ortak standardizasyona sahip olduğundan emin olmak, verilerin tümü tek bir veri kümesinde birleştirildiğinde dahi veri setlerinin hala işe yarar olmasını sağlayacaktır.
18+
19+
- **Model doğruluğu**: Temiz veriler, üzerinde kullanıldıkları modellerin doğruluğunu arttırır.
20+
21+
## Veriyi temizlemede genel hedef ve stratejiler
22+
23+
- **Veri setini araştırmak**: Daha [sonraki derslerde](https://github.com/microsoft/Data-Science-For-Beginners/tree/main/4-Data-Science-Lifecycle/15-analyzing) ele alacağımız veri araştırması, temizlenmesi gereken verilerin tespitinde yardımcı olabilir. Bir veri setindeki değerleri görsel olarak gözlemlemek, geri kalanının nasıl görüneceğine dair beklentileri belirleyebilir veya çözülebilecek sorunlar hakkında bir fikir verebilir. Veri setini araştırmak, temel sorgulamayı, görselleştirmeleri ve örneklemeyi içerebilir.
24+
25+
- **Biçimlendirme**: Kaynağa bağlı olarak, verilerin sunulma biçiminde tutarsızlıklar olabilir. Bu tutarsızlık veri setinde görülebilir fakat görselleştirme ve arama sonuçlarında düzgün bir şekilde gözükmeyebilir ayrıca tutarsızlık veriyi aramada ve verinin gösterilmesinde problemlere yol açabilir. Yaygın biçimlendirme sorunları, boşlukları, tarihleri ​​ve veri türlerini düzenlemeyi içerir. Biçimlendirme sorunlarını çözmek genellikle veriyi kullanan kişilere bağlıdır. Örneğin, tarihlerin ve sayıların nasıl sunulduğuna ilişkin standartlar ülkeye göre farklılık gösterebilir.
26+
27+
- **Kopya veriler**: Veri setinde birden fazla kez kullanılan veriler yanlış sonuçlar verebilir ve genellikle kaldırılmalıdır. Birden fazla kullanılan veriler genellikle iki veya daha fazla veri setinin birleştirilmesi sırasında ortaya çıkar. Ancak, bazı birleştirilmiş veri setlerinde ortaya çıkan kopya veriler önemli detaylar içerebilir ve korunması gerekir.
28+
29+
- **Kayıp veri**: Eksik veriler, yanlışlıkların yanı sıra zayıf veya yanlı sonuçlara neden olabilir. Bazen bunlar verinin "yeniden yüklenmesi", yani eksik değerlerin Python koduyla işlenip doldurulması veya yalnızca değer ve ilgili verinin silinmesiyle çözülebilir. Verilerin neden eksik olabileceğiyle ilgili birçok neden vardır ve bu eksik veriyi düzeltmek için alınan önlemler, ilk etapta nasıl ve neden kaybolduklarına bağlı olabilir.
30+
31+
## Veri Setiyle İlgili Bilgileri Araştırma
32+
> **Öğrenme hedefi:** Bu alt başlığın sonunda, pandas veri setlerinin içinde depolanan veriyle ilgili genel bilgilere ulaşmakta sorun yaşamıyor olacaksınız.
33+
34+
Verilerinizi pandas'a yükledikten sonra, büyük ihtimalle veriler bir veri çerçevesinin(DataFrame) içerisinde değilmiş gibi hissettirecektir.(ayrıntılı genel bakış için önceki [derse](https://github.com/microsoft/Data-Science-For-Beginners/tree/main/2-Working-With-Data/07-python#dataframe) bakın). Ancak, veri çerçevenizdeki(DataFrame) veri setinde 60.000 satır ve 400 sütun varsa, neyle çalıştığınıza dair bir fikir edinmeye nasıl başlarsınız? Neyse ki, [pandas](https://pandas.pydata.org/) ilk birkaç ve son birkaç satıra ek olarak bir veri çerçevesiyle ilgili genel bilgilere hızlı bir şekilde bakmak için bazı kullanışlı araçlar sağlar.
35+
36+
Bu işlevselliği keşfetmek için Python scikit-learn kitaplığını içe aktaracağız ve ikonik bir veri seti kullanacağız: **Iris veri seti**.
37+
38+
```python
39+
import pandas as pd
40+
from sklearn.datasets import load_iris
41+
42+
iris = load_iris()
43+
iris_df = pd.DataFrame(data=iris['data'], columns=iris['feature_names'])
44+
```
45+
| |sepal length (cm)|sepal width (cm)|petal length (cm)|petal width (cm)|
46+
|----------------------------------------|-----------------|----------------|-----------------|----------------|
47+
|0 |5.1 |3.5 |1.4 |0.2 |
48+
|1 |4.9 |3.0 |1.4 |0.2 |
49+
|2 |4.7 |3.2 |1.3 |0.2 |
50+
|3 |4.6 |3.1 |1.5 |0.2 |
51+
|4 |5.0 |3.6 |1.4 |0.2 |
52+
53+
- **DataFrame.info**: Başlangıç ​​olarak, bir `DataFrame`de bulunan içeriğin bir özetini yazdırmak için `info()` metodu kullanılır. Elimizde ne olduğunu görmek için bu veri kümesine bir göz atalım:
54+
55+
```python
56+
iris_df.info()
57+
```
58+
```
59+
RangeIndex: 150 entries, 0 to 149
60+
Data columns (total 4 columns):
61+
# Column Non-Null Count Dtype
62+
--- ------ -------------- -----
63+
0 sepal length (cm) 150 non-null float64
64+
1 sepal width (cm) 150 non-null float64
65+
2 petal length (cm) 150 non-null float64
66+
3 petal width (cm) 150 non-null float64
67+
dtypes: float64(4)
68+
memory usage: 4.8 KB
69+
```
70+
Buradan itibaren, *Iris* veri setinin dört sütunda boş(null) girdi içermeyen 150 girdiye sahip olduğunu biliyoruz. Tüm veriler 64 bit kayan noktalı sayılar olarak saklanıyor.
71+
From this, we know that the *Iris* dataset has 150 entries in four columns with no null entries. All of the data is stored as 64-bit floating-point numbers.
72+
73+
- **DataFrame.head()**: Ardından, `DataFrame'in` gerçek içeriğini kontrol etmek için `head()` metodunu kullanıyoruz. `iris_df`'nin ilk birkaç satırının neye benzediğini görelim:
74+
```python
75+
iris_df.head()
76+
```
77+
```
78+
sepal length (cm) sepal width (cm) petal length (cm) petal width (cm)
79+
0 5.1 3.5 1.4 0.2
80+
1 4.9 3.0 1.4 0.2
81+
2 4.7 3.2 1.3 0.2
82+
3 4.6 3.1 1.5 0.2
83+
4 5.0 3.6 1.4 0.2
84+
```
85+
- **DataFrame.tail()**: Tersine, `Veri çerçevesinin` son birkaç satırını kontrol etmek için `tail ()` yöntemini kullanırız:
86+
```python
87+
iris_df.tail()
88+
```
89+
```
90+
sepal length (cm) sepal width (cm) petal length (cm) petal width (cm)
91+
145 6.7 3.0 5.2 2.3
92+
146 6.3 2.5 5.0 1.9
93+
147 6.5 3.0 5.2 2.0
94+
148 6.2 3.4 5.4 2.3
95+
149 5.9 3.0 5.1 1.8
96+
```
97+
> **Bilgi:** Yalnızca bir DataFrame'deki bilgilerle ilgili metadata'ya(diğer bilgileri tanımlamak veya kullanmanıza yardımcı olmak için verilen bilgiler) veya birindeki ilk ve son birkaç değere bakarak bile, uğraştığınız verilerin boyutu, şekli ve içeriği hakkında anında bir fikir edinebilirsiniz.
98+
99+
## Kayıp Verinin Üstesinden Gelmek
100+
> **Öğrenme hedefi:** Bu alt başlığın sonunda, null(boş) verileri nasıl doldurabileceğinizi veya silebileceğinizi öğrenmiş olacaksınız.
101+
102+
Çoğu zaman, kullanmak istediğiniz veri kümelerinin (kullanmak zorunda olduğunuz) içinde eksik değerler bulunur. Eksik verilerin nasıl ele alındığı, nihai analizinizi ve gerçek dünyadaki sonuçlarınızı etkileyebilecek ince uzlaşmaları beraberinde getirir.
103+
104+
Pandas eksik verileri iki şekilde ele alır. İlki önceki bölümlerde gördüğünüz şekildedir: `NaN`, başka bir deyişle Bir sayı Değil (Not a Number). Bu aslında IEEE kayan nokta tanımlamasının bir parçası olan ve yalnızca eksik kayan nokta verilerini belirtmek için kullanılan özel bir değerdir.
105+
106+
Float(kayan noktalı sayı/ondalıklı sayı) dışındaki eksik değerler için pandas, Python `None` nesnesini kullanır. Aslında aynı şeyi söyleyen iki farklı değer türüyle karşılaşmanız kafa karıştırıcı görünse de, bu tasarım seçiminin sağlam programatik nedenleri vardır ve pratikte bu seçim birçok durumda pandas'ın düzgün çalışmasını sağlar. Buna rağmen, hem `None` hem de `NaN`, bunların nasıl kullanılabileceği konusunda dikkat etmeniz gereken kısıtlamalar taşır.
107+
108+
[Buradan](https://github.com/microsoft/Data-Science-For-Beginners/blob/main/4-Data-Science-Lifecycle/15-analyzing/notebook.ipynb) `NaN` ve `None` hakkında daha fazla bilgi edinin!
109+
110+
- **Null değerleri tespit etme**: Pandas'ta `isnull()` ve `notnull()` metodları null verileri tespit etmek için birincil metodlardır. İkisi de veri için Boolean maskesi döndürür. `NaN` değerler için `numpy` kullanacağız:
111+
```python
112+
import numpy as np
113+
114+
example1 = pd.Series([0, np.nan, '', None])
115+
example1.isnull()
116+
```
117+
```
118+
0 False
119+
1 True
120+
2 False
121+
3 True
122+
dtype: bool
123+
```
124+
Çıktıya dikkatlice bakın. `0` aritmetik olarak null olsa da, yine de mükemmel bir tam sayıdır ve pandas buna göre davranır. `''` biraz daha farklıdır. Bölüm 1'de boş bir string değerini temsil etmek için kullanmış olsak da, yine de bir string nesnesidir ve pandas söz konusu olduğunda null değer değildir.
125+
126+
Şimdi bu metotları pratikte kullanacağınız şekilde kullanalım. Boole maskelerini doğrudan ``Seri`` veya ``DataFrame`` dizini olarak kullanabilirsiniz; bu, soyutlanmış eksik değerlerle çalışmaya çalışırken yararlı olabilir.
127+
128+
> **Bilgi**: `isnull()` ve `notnull()` metodlarının ikiside `DataFrame`'lerin içinde kullanıldığında benzer sonuçlar verir: sonuçları ve bu sonuçların indeksini gösterirler ki bu, verilerinizle boğuşurken size çok yardımcı olacaktır.
129+
130+
- **Null değerlerin silinmesi**: Kayıp verileri belirlemenin ötesinde, pandas `Seriler` ve `DataFrame`'lerden boş verileri silmek için uygun bir yol sunar. (Büyük veri setlerinde [NA] verileri silmek bunlarla uğraşmaktan daha çok önerilir.) Bunu görebilmek için `example1`'e geri dönelim:
131+
```python
132+
example1 = example1.dropna()
133+
example1
134+
```
135+
```
136+
0 0
137+
2
138+
dtype: object
139+
```
140+
Bunun `example3[example3.notnull()]` çıktısı gibi görünmesi gerketiğini not edelim. Buradaki fark, yalnızca maskelenmiş değerleri indekslemek yerine, `dropna`'nın bu eksik değerleri `Seriler` `example1`'den silmesidir.
141+
142+
`DataFrame`'lerin iki boyutu olduğundan verileri silmek için daha fazla seçenek sunarlar.
143+
```python
144+
example2 = pd.DataFrame([[1, np.nan, 7],
145+
[2, 5, 8],
146+
[np.nan, 6, 9]])
147+
example2
148+
```
149+
| | 0 | 1 | 2 |
150+
|------|---|---|---|
151+
|0 |1.0|NaN|7 |
152+
|1 |2.0|5.0|8 |
153+
|2 |NaN|6.0|9 |
154+
155+
(Pandas'ın, NaN'leri yerleştirmek için sütunlardan ikisini float'a çevirdiğini fark ettiniz mi?)
156+
157+
`DataFrame`'den tek bir değeri silemezsiniz, bu yüzden tüm bir satırı yada sütunu silmeniz gerekir.
158+
You cannot drop a single value from a `DataFrame`, so you have to drop full rows or columns. Ne yaptığınıza bağlı olarak, birini veya diğerini yapmak isteyebilirsiniz ve bu nedenle pandas size her ikisi için de seçenekler sunar. Veri biliminde sütunlar genellikle değişkenleri ve satırlar değişken gruplarının isimlerini(okul numaraları, köpek sayısı vb) temsil ettiğinden, satırları silme olasılığınız daha yüksektir; "dropna()" için varsayılan ayar, herhangi bir boş değer içeren tüm satırları silmektir:
159+
160+
```python
161+
example2.dropna()
162+
```
163+
```
164+
0 1 2
165+
1 2.0 5.0 8
166+
```
167+
Eğer gerekliyse, NA değerleri sütunlar için silmek mümkündür. Bunu yapmak için `axis=1` kullanılır:
168+
```python
169+
example2.dropna(axis='columns')
170+
```
171+
```
172+
2
173+
0 7
174+
1 8
175+
2 9
176+
```
177+
Bunun, özellikle daha küçük veri setlerinde saklamak isteyebileceğiniz çok sayıda veriyi silebileceğine dikkat edin. Birkaç veya hatta tüm boş değerleri içeren satırları veya sütunları silmek isterseniz ne olur? Bu ayarı, `how` ve `thresh` parametreleriyle `dropna`'da belirtirsiniz.
178+
179+
Varsayılan olarak, `how='any'` (kendiniz kontrol etmek veya yöntemin diğer parametrelerinin neler olduğunu görmek isterseniz, bir kod hücresinde `example4.dropna?` komutunu çalıştırın). Alternatif olarak, yalnızca tüm boş değerleri içeren satırları veya sütunları silmek için `how='all'` olarak belirtebilirsiniz. Bunu çalışırken görmek için `DataFrame` örneğimizi genişletelim.
180+
181+
```python
182+
example2[3] = np.nan
183+
example2
184+
```
185+
| |0 |1 |2 |3 |
186+
|------|---|---|---|---|
187+
|0 |1.0|NaN|7 |NaN|
188+
|1 |2.0|5.0|8 |NaN|
189+
|2 |NaN|6.0|9 |NaN|
190+
191+
`thresh` parametresi size daha ayrıntılı kontrol sağlar: bir satır veya sütunun silinmemesi için sahip olması gereken *boş olmayan(non-null)* değerlerin sayısını ayarlarsınız:
192+
```python
193+
example2.dropna(axis='rows', thresh=3)
194+
```
195+
```
196+
0 1 2 3
197+
1 2.0 5.0 8 NaN
198+
```
199+
Burada, yalnızca iki boş olmayan değer içerdiğinden, ilk ve son satır silinmiştir.
200+
201+
- **Null değerleri doldurmak**: Veri setine bağlı olarak bazen null değerleri doldurmak onları silmekten daha mantıklıdır. Bunu yapmak için `isnull`'u kullanabilirsiniz, ancak bu, özellikle doldurmanız gereken çok fazla değer varsa, zahmetli olabilir. Bu, veri biliminde çok yaygın bir durum olduğundan, pandas, eksik değerlerin seçtiğiniz bir değerle değiştirildiği `Series` veya `DataFrame`'in bir kopyasını döndüren `fillna`'yı sağlar. Bunun pratikte nasıl çalıştığını görmek için başka bir `Series` örneği yapalım.
202+
```python
203+
example3 = pd.Series([1, np.nan, 2, None, 3], index=list('abcde'))
204+
example3
205+
```
206+
```
207+
a 1.0
208+
b NaN
209+
c 2.0
210+
d NaN
211+
e 3.0
212+
dtype: float64
213+
```
214+
Tüm boş girdileri `0` gibi tek bir değerle doldurabilirsiniz:
215+
```python
216+
example3.fillna(0)
217+
```
218+
```
219+
a 1.0
220+
b 0.0
221+
c 2.0
222+
d 0.0
223+
e 3.0
224+
dtype: float64
225+
```
226+
Bir boş değeri doldurmak için son geçerli değeri kullanmak üzere boş değerleri **ileri doldurabilirsiniz(forward-fill)**:
227+
```python
228+
example3.fillna(method='ffill')
229+
```
230+
```
231+
a 1.0
232+
b 1.0
233+
c 2.0
234+
d 2.0
235+
e 3.0
236+
dtype: float64
237+
```
238+
Bir boş değeri doldurmak için bir sonraki geçerli değeri geriye doğru atamak için **geri doldur(back-fill)** da yapabilirsiniz:
239+
```python
240+
example3.fillna(method='bfill')
241+
```
242+
```
243+
a 1.0
244+
b 2.0
245+
c 2.0
246+
d 3.0
247+
e 3.0
248+
dtype: float64
249+
```
250+
Tahmin edebileceğiniz gibi, bu `DataFrame`'lerle de aynı şekilde çalışır, ayrıca boş değerlerin doldurulacağı bir `eksen(axis)` de belirtebilirsiniz. daha önce kullanılan `example2`'yi tekrar kullanarak:
251+
```python
252+
example2.fillna(method='ffill', axis=1)
253+
```
254+
```
255+
0 1 2 3
256+
0 1.0 1.0 7.0 7.0
257+
1 2.0 5.0 8.0 8.0
258+
2 NaN 6.0 9.0 9.0
259+
```
260+
İleriye doğru doldurma için önceki bir değer mevcut olmadığında, boş değerin aynı kaldığına dikkat edin.
261+
262+
> **Bilgi:** Veri setlerinizdeki kayıp değerlerle başa çıkmanın birden çok yolu vardır. Kullandığınız strateji (bunları kaldırmak, değiştirmek veya hatta nasıl değiştireceğiniz) bu verilerin ayrıntılarına göre belirlenmelidir. Veri kümelerini ne kadar çok ele alır ve etkileşime girerseniz, eksik değerlerle nasıl başa çıkacağınız konusunda o kadar başarılı olursunuz.
263+
264+
## Yinelenen verileri silme
265+
266+
> **Öğrenme hedefi:** Bu alt başlığın sonunda DataFrame'lerin içindeki yinelenen verileri bulma ve silme konusunda bilgi sahibi olacaksınız.
267+
268+
Eksik verilere ek olarak, gerçek dünyadaki veri setlerinde sıklıkla yinelenen verilerle karşılaşacaksınız. Neyse ki, `pandas` yinelenen girdileri tespit etmek ve kaldırmak için kolay yollar sağlar.
269+
270+
- **Yinelenen verilerin saptanması: `duplicated`**: Pandas'da `duplicated` metodunu kullanarak yinelenen değerleri kolayca tespit edebilirsiniz; bu, `DataFrame`'deki bir girdinin daha önceki bir girdinin kopyası olup olmadığını gösteren bir Boole maskesi döndürür. Bunu çalışırken görmek için başka bir `DataFrame` örneği oluşturalım.
271+
```python
272+
example4 = pd.DataFrame({'letters': ['A','B'] * 2 + ['B'],
273+
'numbers': [1, 2, 1, 3, 3]})
274+
example4
275+
```
276+
| |letters|numbers|
277+
|------|-------|-------|
278+
|0 |A |1 |
279+
|1 |B |2 |
280+
|2 |A |1 |
281+
|3 |B |3 |
282+
|4 |B |3 |
283+
284+
```python
285+
example4.duplicated()
286+
```
287+
```
288+
0 False
289+
1 False
290+
2 True
291+
3 False
292+
4 True
293+
dtype: bool
294+
```
295+
- **Yinelenen verilerin silinmesi: `drop_duplicates`: `drop_duplicates`, tüm `yinelenen` değerlerin `False` olduğu verilerin bir kopyasını döndürür:
296+
```python
297+
example4.drop_duplicates()
298+
```
299+
```
300+
letters numbers
301+
0 A 1
302+
1 B 2
303+
3 B 3
304+
```
305+
Hem `duplicated` hem de `drop_duplicates` varsayılan olarak tüm sütunları dikkate alır, ancak bunların `DataFrame`'inizdeki yalnızca bir sütunun alt kümesini incelemelerini sağlayabilirsiniz:
306+
```python
307+
example6.drop_duplicates(['letters'])
308+
```
309+
```
310+
letters numbers
311+
0 A 1
312+
1 B 2
313+
```
314+
315+
> **Bilgi:** Yinelenen verileri kaldırmak, hemen hemen her veri bilimi projesinin önemli bir parçasıdır. Yinelenen veriler, analizlerinizin sonuçlarını değiştirebilir ve size yanlış sonuçlar verebilir!
316+
317+
318+
## 🚀 Challenge
319+
320+
Konuştuğumuz bütün materyaller burada sağlanıyor [Jupyter Notebook](https://github.com/microsoft/Data-Science-For-Beginners/blob/main/4-Data-Science-Lifecycle/15-analyzing/notebook.ipynb). Ek olarak, her bölümden sonra alıştırmalar var, bunları yapmayı deneyin!
321+
322+
## [Ders Sonu Kısa Sınavı](https://red-water-0103e7a0f.azurestaticapps.net/quiz/15)
323+
324+
325+
326+
## İnceleme & Bireysel Çalışma
327+
328+
Veriyi analiz ve modelleme için hazırlamanın ve veriyi temizlemenin "uygulamalı" bir deneyim olan önemli bir adım olduğunu keşfetmenin birçok yolu vardır. Bu dersin kapsamadığı teknikleri keşfetmek için Kaggle'dan bu challengeları deneyin.
329+
330+
- [Data Cleaning Challenge: Parsing Dates](https://www.kaggle.com/rtatman/data-cleaning-challenge-parsing-dates/)
331+
332+
- [Data Cleaning Challenge: Scale and Normalize Data](https://www.kaggle.com/rtatman/data-cleaning-challenge-scale-and-normalize-data)
333+
334+
335+
## Ödev
336+
337+
[Bir Formdaki Verilerin Değerlendirilmesi](assignment.md)

0 commit comments

Comments
 (0)