एकरूपता

R में डेटा क्लीनिंग

Maggie Matsui

Content Developer @ DataCamp

एकरूपता

  • अलग-अलग यूनिट या फ़ॉर्मेट
    • Temperature: °C बनाम °F
    • Weight: kg बनाम g बनाम lb
    • Money: USD $ बनाम GBP £ बनाम JPY ¥
    • Date: DD-MM-YYYY बनाम MM-DD-YYYY बनाम YYYY-MM-DD
R में डेटा क्लीनिंग

एकरूपता की समस्याएँ कहाँ से आती हैं?

बाएँ, तीन डेटाबेस जिनसे एक डेटा टेबल की ओर तीर जा रहे हैं, ताकि कई डेटा स्रोत दिखें। दाएँ, फ्री-टेक्स्ट बॉक्स में कर्सर और कीबोर्ड वाला कंप्यूटर, ताकि डेटा एंट्री त्रुटियाँ दिखें।

R में डेटा क्लीनिंग

एकरूपता खोजना

head(nyc_temps)
         date temp
1  2019-04-01  4.2
2  2019-04-02  7.5
3  2019-04-03 12.2
4  2019-04-04 11.1
5  2019-04-05 41.5
6  2019-04-06 11.9
R में डेटा क्लीनिंग

एकरूपता खोजना

library(ggplot2)
ggplot(nyc_temps, aes(x = date, y = temp)) +
  geom_point()

कोड से बना प्लॉट। तीन तापमान बाकी से बहुत अधिक दिख रहे हैं।

R में डेटा क्लीनिंग

क्या करें?

  • एक ही सर्वोत्तम विकल्प नहीं है. यह आपके डेटासेट पर निर्भर करता है!
  • अपने डेटा का स्रोत समझने के लिए रिसर्च करें

कोड से बना प्लॉट। तीन तापमान बाकी से बहुत अधिक दिख रहे हैं।

  • 7, 16, और 23 Apr का डेटा बाहरी स्रोत से है जहाँ °F में मापा गया था
R में डेटा क्लीनिंग

यूनिट रूपांतरण

$$\text{C} = (\text{F} - 32) \times \frac{5}{9}$$

ifelse(condition, value_if_true, value_if_false)

nyc_temps %>%
  mutate(temp_c = ifelse(temp > 50, (temp - 32) * 5 / 9, temp))
         date temp   temp_c
1  2019-04-01  4.2  4.20000
...
7  2019-04-07 58.5 14.72222
...
R में डेटा क्लीनिंग

यूनिट रूपांतरण

nyc_temps %>%
  mutate(temp_c = ifelse(temp > 50, (temp - 32) * 5 / 9, temp)) %>%
  ggplot(aes(x = date, y = temp_c)) +
    geom_point()

कोड से बना प्लॉट; इस बार कोई स्पष्ट आउट्लायर नहीं क्योंकि मान कन्वर्ट हो चुके हैं।

R में डेटा क्लीनिंग

तिथि एकरूपता

nyc_temps
             date temp_c
1      2019-11-23   5.12
2        01/15/19  -0.67
3  April 24, 2019  17.46
4        08/30/19  26.46
5 October 3, 2019  14.63
6      2019-03-17   3.47

 

Date string Date फ़ॉर्मेट
"2019-11-23" "%Y-%m-%d"
"01/15/19" "%m/%d/%y"
"April 24, 2019" "%B %d, %Y"

 

R कंसोल में ?strptime

R में डेटा क्लीनिंग

एक से अधिक फ़ॉर्मेट पार्स करना

library(lubridate)
parse_date_time(nyc_temps$date,
                orders = c("%Y-%m-%d", "%m/%d/%y", "%B %d, %Y"))
"2019-11-23 UTC" "2019-01-15 UTC" "2019-04-24 UTC" "2019-08-30 UTC"
"2019-10-03 UTC" "2019-03-17 UTC"
parse_date_time("Monday, January 3",
                orders = c("%Y-%m-%d", "%m/%d/%y", "%B %d, %Y"))
NA
R में डेटा क्लीनिंग

अनिर्णीत तिथियाँ

क्या 02/04/2019 फरवरी है या अप्रैल?

  • आपके डेटा पर निर्भर करता है!

 

विकल्प:

  • missing मान मानें
  • यदि डेटा कई स्रोतों से है, स्रोत के आधार पर infer करें
  • डेटासेट के अन्य डेटा के आधार पर infer करें
R में डेटा क्लीनिंग

अभ्यास करते हैं!

R में डेटा क्लीनिंग

Preparing Video For Download...