İngilizce Metin: https://o-date.github.io/draft/book/cleaning-data.html
Veriler hakkında genellikle “temiz”, “dağınık”, “ham”, “işlenmiş” veya tüm bu sıfatların bir kombinasyonu olarak konuşuruz. Temiz verilerin anlaşılması, manipüle edilmesi ve damıtılması kolaydır. Dağınık verileri daha kullanışlı bir hale getirmek için çok çalışmak gerekebilir. “Ham” veriler biraz daha karmaşıktır. Her adımda ne tür bilgiler toplayacağımız, hangi ölçüm birimlerini kullanacağımız, gözlemlerimizi tanımlamak için hangi terimleri seçeceğimiz gibi önemli kararlar alırız ve bunların her biri verileri dönüştürür. Bu gerçekler göz önünde bulundurulduğunda, veriler hiçbir zaman gerçekten “ham” olamaz (Gitelman 2013). Bir saha arkeolojisi örneği için, bir toprak katmanındaki tüm eserleri ve kalıntıları veya sadece bazılarını (“moloz” gibi kategoriler hakkında kapsamlı ayrıntıları dışarıda bırakarak) ölçmek ve çizmek için bir seçim yaparız. Eserlerin ve stratigrafinin boyutlarını görsel olarak santimetreye veya yarım santimetreye kadar bir cetvelle veya milimetre parçalarına kadar hassas aletlerle kaydetmeyi tercih ediyoruz. Doğal toprak katmanlarını ya da keyfi seviyeleri kazabiliriz. Bu kararların her biri elde edilen verileri etkiler.
Başka birinin önceden var olan veya “miras” verileriyle çalışırken, orijinal araştırmacı tarafından ne tür seçimler ve varsayımlar yapılmış olabileceğini düşünmek önemlidir. Orijinal projenin hedefleri nelerdi? Orijinal yaratıcı neleri yakalamaya çalışmadı?
Verilerinizi temizlemek için seçeceğiniz yol, veri setinin almasını istediğiniz yapıya göre belirlenecektir. Veri temizleme metodolojisine karar vermeden önce verilerin düzenlenmesi ve saklanmasıyla ilgili aşağıdaki bölüme bir göz atın. Kullanışlı veri, koruma ve veri toplama ile ilgili önceki bölümlerde olduğu gibi burada da kilit unsurun planlama olduğunu unutmayın.
2.3.1 Araçlar
Verileri düzenli ifadeler (regular expressions) kullanarak veya Microsoft Excel’de yerleşik işlevselliği kullanarak temizleyebilirsiniz. Ya da metin işlemleri için Python veya R gibi bir programlama dili kullanabilirsiniz. Ancak dağınık verileri temizlemek için en erişilebilir ve güçlü, ücretsiz araçlardan biri OpenRefine‘dir.
Daha ileri gitmeden önce, OpenRefine videolarını izlemek, programı indirmek ve nasıl çalıştığını öğrenmek için birkaç dakikanızı ayırın. Buna pişman olmayacaksınız, ancak geçmişte elektronik tablo verilerini manuel olarak temizlemek için harcadığınız zaman için gözyaşı dökebilirsiniz.
2.3.2 Temizleme Adımları
Birçok veri setini bir araya getirme
Miras verilerle veya hatta kendi büyük projelerinizde çalışırken, birçok veri setini uyumlu bir koleksiyonda bir araya getirerek başlamanız gerekir. “Orijinal” verileri dönüştürmeyin. Herhangi bir temizleme işlemi türev kopyalar üzerinde yapılmalıdır. En başta her şeyin kopyasını alın ve bunları güvenli bir yerde saklayın.
Veri Toplamanın Tasarlanması (Bölüm 2.2.) ile ilgili önceki bölümde tartışılan fikirlere dayanarak, dokümantasyon ve şeffaflık anahtar kavramlardır. Veri setlerinizi nereden aldınız? Bunu bir yere yazın. Bunları bilgisayarda okunabilir hale getirmek için herhangi bir şey (transkripsiyon gibi) yaptınız mı? Yöntemlerinizi açıklayarak bunu da yazın.
Birden fazla yerden gelen verileri bir araya mı getiriyorsunuz? Güzel bir şekilde uyacaklar mı, yoksa birleştirilmeleri için biraz daha çalışma yapmak mı gerekecek?
Veri set(ler)inizi yakından inceleyin. Her satır tek bir şeyi mi tanımlıyor? Bu şey nedir? Bazen verilerin yapısını ifade etmek göründüğünden daha zordur. Örneğin, Virginia’daki National Register of Historic Places (Ulusal Tarihi Yerler Kayıtlarını) tanımlayan bu veri kümesini ele alalım.
Name Listing_Date ID
<chr> <chr> <chr>
1 Fifth Street Historic District 2/8/2012 118-5318
2 Armstrong School 8/22/2012 118-5320
3 Pierce Street Historic District 8/25/2014 118-5238
4 Doyle Florist Inc./ H. R. Schenkel Inc. Greenhouse Range 11/19/2014 118-5294
5 Lynchburg Hosiery Mill #1 2/21/2017 118-0126
İlk bakışta, veri setindeki her satır bir binayı, tarihi bölgeyi veya arkeolojik alanı tanımlıyor gibi görünebilir. Ancak daha yakından incelendiğinde, her satırın bir belgeyi tanımladığı ve bu belgenin de tarihi bir mülkü tanımladığı anlaşılır. İster bir veri setini oluşturmuş olun ister devralınan verilerle çalışıyor olun, verilerinizin düşündüğünüz şeyi tanımladığından emin olmanız faydalı olacaktır.
Üst verinizi tanımlayın. Her sütun başlığını açıklayan bir belge oluşturun. Veri setlerinizin içinde hesaplanan değerlerden kaçının; bu kısmı analize bırakın.
Normalleştirme (ing. normalisation), her bir gerçeğin tek bir yerde ifade edilmesi anlamına gelir. Amaç, bilgilerinizi mümkün olduğunca çok sayıda standart alt kümeye ayırmaktır. Ancak, atomik özgüllük ve mükemmellik imkansızdır ve kimseye yardımcı olmayacaktır. Ayrıntıya inmek devasa, hantal bir veri seti oluşturabilir. Sonuçta, analiz muhtemelen verilerin yeniden bir araya getirilmesini gerektirecektir, ancak verileriniz normalse bu görev basit olacaktır. İster ilişkisel bir veritabanında çalışıyor olun ister türetilmiş tablolar üzerinde analizler gerçekleştiriyor olun, uygun normalleştirme değişiklik gösterebilir. Ancak verilerin normalleştirilmesini en baştan düşünmek işleri temiz tutabilir. Satırlar ve sütunlar arasında değişkenleri karıştıran bir elektronik tablo görsel yorumlama için bir bakışta yararlı olabilir, ancak aynı veriler analiz için çok kolay çalışmayabilir. Aşırı normalleştirilmiş tablolardan oluşan bir koleksiyonun basitçe okunması ve yorumlanması oldukça zor olabilir (ve büyük miktarda bilgi ile çalışıyorsanız daha sonra bir hesaplama performansı maliyeti olabilir).
Genel olarak, her satır bir gözlemi temsil etmeli ve her sütun bir değişken içermelidir. Bir sütunda veya alanda birçok bilgi türüne dikkat edin. Bu verileri birden fazla sütuna bölmek, çalışmayı çok daha kolay hale getirecektir.
Aşağıda, birkaç farklı türde dağınık veri kümesinden örnekler kullanarak verileri analiz ve yeniden kullanım için hazırlamaya yönelik birkaç adım yer almaktadır.
1. Karmaşayı tanımlayın.
Verilerinizde gerçek bir temizlik veya yeniden şekillendirme yapmadan önce, keşfetmek için biraz zaman ayırın. Değerlerinizden herhangi birinde satır başı veya boşluk var mı? Yazım hataları veya standart olmayan biçimlendirme var mı? Tarihler ve sayılar olması gerektiği gibi görünüyor mu? Hemen herhangi bir değişiklik yapmayın, ancak ne yapmak istediğinizi not edin. Biraz araştırdıktan sonra, en iyi işlem sırası daha net hale gelecektir. Bununla birlikte, boşlukları ve biçimlendirme sorunlarını başlangıçta ele almak genellikle iyi bir tavsiyedir.
NAME BIRTH (date, location) DEATH SPOUSE(S)
<chr> <chr> <chr> <chr>
1 Bacchus, Ellen P. abt 1863 (Richmond) 9 May 1916 n/a
2 Ballard (Reese), Bessie E. Abt 1879 (Richmond) 29 Dec 1928 John L. Ballard Sr. (√) (m. 18 Sep 1898, in Manhattan)
3 Ballard, Dora Maude [went by Maude] 16 Mar 1898 (North Carolina) 31 Oct 1973 John L. Ballard Sr. (√)
4 Ballard, John Lee, Sr. 15 Jun 1877 9 Sep 1949 Dora M. — (√); Bessie E. Reese (√) (m. 18 Sep 1898, in Manhattan)
Yukarıdaki örnekte, ayrı sütunlarda depolanan birden fazla veri türüne sahip olduğumuza dikkat edin. BIRTH (DOĞUM) sütununda parantez içinde hem tarih hem de doğum yeri hakkında bilgilerimiz var, ancak yaklaşık bir tarihi gösteren “abt” de var. Bazı tarihler gün, ay ve yılı içerirken, bazıları yalnızca yılı içerir. SPOUSE(S) (EŞ(LER)) sütununda yalnızca bir veya daha fazla isim değil, aynı zamanda bir şeyi belirtmek için bir “√” sembolü ve potansiyel olarak bir evlilik tarihi ve yeri bulunur. Bu bilgi unsurlarının her biri kendi sütununu veya satırını hak eder. İsim bile İlk, Orta, Son, Kızlık, Diğer, Onursal, Sonek vb. olarak ayrılabilir. Ne kadar ileri gitmeniz gerektiği projenizin nihai hedeflerine bağlıdır.
cf_ppl_surname cf_ppl_first_name cf_ppl_middle_name cf_ppl_other_name cf_ppl_honorif cf_ppl_birth_month cf_ppl_birth_year cf_ppl_birth_day
<chr> <chr> <chr> <chr> <chr> <chr> <int> <int>
1 Ballard Dora Maude NA NA NA 1898 16
2 Ballard Bessie E. Reese NA NA 1879 NA
3 Bacchus Ellen P. NA NA NA 1850 NA
4 Ballard John Lee NA NA June 1877 15
- Birbiriyle ilişkili birden fazla tablo düşünün.
Aşağıdaki veriler, geniş bir arkeolojik saha notları koleksiyonu için bir bulgu yardımı oluşturma projesinden gelmektedir. “Associated Site Numbers” (“İlişkili Alan Numaraları”) sütununun tek tek alan numaraları, aralıklar ve virgülle ayrılmış çoklu değerlerin bir karışımını içerdiğine dikkat edin. Birden fazla kişi mobil bir cihazdaki basit bir KoboToolbox formu aracılığıyla veri girdiğinden, veriler toplandığında bu pratik bir seçimdi. Ancak bu verileri ilişkisel bir veritabanına taşımak veya herhangi bir analiz yapmak için, bu değerleri kayıtlarla ilgili bir tabloya ve yerleşmelerle ilgili bir tabloya ayırmamız gerekecek.
Box ID Recordset ID Recordset Name Year Associated Site Numbers
<chr> <chr> <chr> <int> <chr>
1 FN097 RS 57214 Dulles International Airport Live Fir… 1991 44LD0500
2 FN097 RS 90948 Dulles International Airport Satellit… 1992 44LD0423
3 FN097 RS 22491 Fall HIll Avenue Bridge Replacement 2010 44SP0637
4 FN097 RS 40525 Bluestone Ph I 2007 44TZ0157-44TZ0168
5 FN097 RS 25592 Bluestone Ph II 2008 44TZ0160-44TZ0162, 44TZ0165
6 FN097 RS 1583 Route 5 Improvements 2007 44HE0057, 44HE1079, 44HE1080, 44HE1081
Yine, bu verileri ayrıştırmak için birçok yöntem vardır, ancak bu durumda OpenRefine kullandık. İşlemden sonra, field_notes_info ve field_notes_sites olmak üzere iki tablo elde ediyoruz:
Box ID Recordset ID Recordset Name Year
<chr> <chr> <chr> <int>
1 FN097 RS 57214 Dulles International Airport Live Fire and Police/Fire 1991
2 FN097 RS 90948 Dulles International Airport Satellite Parking 1992
3 FN097 RS 22491 Fall HIll Avenue Bridge Replacement 2010
4 FN097 RS 40525 Bluestone Ph I 2007
5 FN097 RS 25592 Bluestone Ph II 2008
6 FN097 RS 1583 Route 5 Improvements 2007
Tablo 2.1.x, field_notes_info
`Recordset ID` Split_Site_Nums
<chr> <chr>
1 RS 57214 44LD0500
2 RS 90948 44LD0423
3 RS 22491 44SP0637
4 RS 40525 44TZ0157
5 RS 40525 44TZ0158
6 RS 40525 44TZ0159
7 RS 40525 44TZ0160
8 RS 40525 44TZ0161
9 RS 40525 44TZ0162
10 RS 40525 44TZ0163
11 RS 40525 44TZ0164
12 RS 40525 44TZ0165
13 RS 40525 44TZ0166
14 RS 40525 44TZ0167
15 RS 40525 44TZ0168
16 RS 25592 44TZ0160
17 RS 25592 44TZ0161
18 RS 25592 44TZ0162
19 RS 25592 44TZ0165
20 RS 1583 44HE0057
21 RS 1583 44HE1079
22 RS 1583 44HE1080
23 RS 1583 44HE1081
Tablo 2.1.x, field_notes_sites
- Bir araya getirin
Artık bu iki tabloyu her iki tabloda da görünen “Recordset ID” sütununda birleştirebiliriz. Veri yapısı ve birleştirme hakkında daha fazla bilgiyi Veritabanları bölümünde bulabilirsiniz.
2.3.3 Çıkarımlar
- Orijinal verilerinizi temizlemeyin veya dönüştürmeyin. Her zaman kopyalar üzerinde çalışın ve yöntemlerinizi takip edin.
- Bir temizleme stratejisi geliştirmek için verilerinizi keşfetmeye zaman ayırın. Verilerinizle ilgili çok sayıda soru sorun.
- Gerekmiyorsa manuel olarak temizlik yapmayın. OpenRefine, Python ve R gibi araçları/dilleri öğrenmek size zaman kazandıracak ve hatalardan kaçınmanızı sağlayacaktır.
2.3.4 İleri Okuma
The Programming Historian’dan, Cleaning Data with OpenRefine
Data Carpentry’den, Formatting Problems
Broman, Karl W., and Kara H. Woo 2018 Data Organization in Spreadsheets. The American Statistician 72(1):2–10. DOI:[10.1080/00031305.2017.1375989](https://doi.org/10.1080/00031305.2017.1375989).
Wilson, Greg, Jennifer Bryan, Karen Cranston, Justin Kitzes, Lex Nederbragt, and Tracy K. Teal 2017 Good enough practices in scientific computing. PLOS Computational Biology 13(6):e1005510. DOI:[10.1371/journal.pcbi.1005510](https://doi.org/10.1371/journal.pcbi.1005510).
1: Bunlar genel olarak Hadley Wickham’ın R’de kullanım için “tidy data” ilkelerini yansıtmaktadır. Bkz (Hadley Wickham 2014)
Referanslar
Gitelman, Lisa, ed. 2013. Raw Data Is an Oxymoron. Cambridge, Massachusetts ; London, England: The MIT Press.
Hadley Wickham. 2014. “Tidy Data.” Journal of Statistical Software 59 (September). doi:10.18637/jss.v059.i10.