දත්ත සමඟ වැඩ කිරීමට තෝරා ගත යුතු භාෂාව - R හෝ Python? දෙකම! pandas සිට tidyverse සහ data.table සහ back වෙත සංක්‍රමණය වීම

අන්තර්ජාලයේ R හෝ Python සෙවීමෙන්, දත්ත සමඟ වැඩ කිරීම සඳහා වඩා හොඳ, වේගවත් සහ වඩාත් පහසු මාතෘකාවක් පිළිබඳව ඔබට මිලියන ගණනක් ලිපි සහ සාකච්ඡා කිලෝමීටර් ගණනක් සොයා ගත හැකිය. එහෙත්, අවාසනාවකට මෙන්, මෙම සියලු ලිපි සහ ආරවුල් විශේෂයෙන් ප්රයෝජනවත් නොවේ.

දත්ත සමඟ වැඩ කිරීමට තෝරා ගත යුතු භාෂාව - R හෝ Python? දෙකම! pandas සිට tidyverse සහ data.table සහ back වෙත සංක්‍රමණය වීම

මෙම ලිපියේ අරමුණ භාෂා දෙකෙහිම වඩාත් ජනප්‍රිය පැකේජවල ඇති මූලික දත්ත සැකසුම් ක්‍රම සංසන්දනය කිරීමයි. තවද ඔවුන් තවමත් නොදන්නා දෙයක් ඉක්මනින් ප්‍රගුණ කිරීමට පාඨකයන්ට උදවු කරන්න. Python වල ලියන අයට R වලින් එකම දේ කරන්නේ කොහොමද කියලා දැනගන්න, සහ අනෙක් අතට.

ලිපිය අතරතුර අපි R හි වඩාත්ම ජනප්‍රිය පැකේජවල වාක්‍ය ඛණ්ඩය විශ්ලේෂණය කරමු. මේවා පුස්තකාලයේ ඇතුළත් පැකේජ වේ. tidyverseසහ පැකේජය ද data.table. සහ ඔවුන්ගේ වාක්‍ය ඛණ්ඩය සමඟ සසඳන්න pandas, Python හි වඩාත්ම ජනප්‍රිය දත්ත විශ්ලේෂණ පැකේජය.

අපි එය පූරණය කිරීමේ සිට පයිතන් සහ ආර් භාවිතයෙන් විශ්ලේෂණාත්මක කවුළු කාර්යයන් සිදු කිරීම දක්වා දත්ත විශ්ලේෂණයේ සම්පූර්ණ මාර්ගය හරහා පියවරෙන් පියවර යන්නෙමු.

අන්තර්ගතය

සලකා බලනු ලබන එක් පැකේජයක යම් දත්ත සැකසුම් මෙහෙයුමක් සිදු කරන්නේ කෙසේදැයි ඔබට අමතක වී ඇත්නම් මෙම ලිපිය වංචා පත්‍රයක් ලෙස භාවිතා කළ හැක.

දත්ත සමඟ වැඩ කිරීමට තෝරා ගත යුතු භාෂාව - R හෝ Python? දෙකම! pandas සිට tidyverse සහ data.table සහ back වෙත සංක්‍රමණය වීම

  1. R සහ Python අතර ප්‍රධාන සින්ටැක්ස් වෙනස්කම්
    1.1. පැකේජ කාර්යයන් වෙත ප්‍රවේශ වීම
    1.2. පැවරුම
    1.3. සුචිගත කිරීම
    1.4. ක්රම සහ OOP
    1.5. නල මාර්ග
    1.6. දත්ත ව්යුහයන්
  2. අපි භාවිතා කරන පැකේජ ගැන වචන කිහිපයක්
    2.1. පිළිවෙලට
    2.2. දත්ත වගුව
    2.3. පැන්ඩා
  3. පැකේජ ස්ථාපනය කිරීම
  4. දත්ත පූරණය කරමින්
  5. දත්ත රාමු නිර්මාණය කිරීම
  6. ඔබට අවශ්ය තීරු තෝරා ගැනීම
  7. පේළි පෙරීම
  8. සමූහගත කිරීම සහ එකතු කිරීම
  9. වගු වල සිරස් එකමුතුව (UNION)
  10. වගු වල තිරස් එකතු කිරීම (JOIN)
  11. මූලික කවුළු කාර්යයන් සහ ගණනය කළ තීරු
  12. R සහ Python හි දත්ත සැකසුම් ක්‍රම අතර ලිපි හුවමාරු වගුව
  13. නිගමනය
  14. ඔබ භාවිතා කරන පැකේජය පිළිබඳ කෙටි සමීක්ෂණයක්

ඔබ දත්ත විශ්ලේෂණය කිරීමට කැමති නම්, ඔබට මගේ සොයා ගත හැක ටෙලිග්රාෆ් и ප්රථම අදියර නාලිකා. බොහෝ අන්තර්ගතයන් R භාෂාව සඳහා කැප කර ඇත.

R සහ Python අතර ප්‍රධාන සින්ටැක්ස් වෙනස්කම්

ඔබට Python සිට R වෙත මාරුවීම පහසු කිරීම සඳහා හෝ අනෙක් අතට, ඔබ අවධානය යොමු කළ යුතු ප්‍රධාන කරුණු කිහිපයක් මම ලබා දෙන්නෙමි.

පැකේජ කාර්යයන් වෙත ප්‍රවේශ වීම

පැකේජයක් R වෙත පූරණය කළ පසු, එහි කාර්යයන් වෙත ප්‍රවේශ වීමට පැකේජයේ නම සඳහන් කිරීමට අවශ්‍ය නොවේ. බොහෝ අවස්ථාවලදී මෙය R හි පොදු නොවේ, නමුත් එය පිළිගත හැකිය. ඔබට ඔබේ කේතයේ එක් කාර්යයක් අවශ්‍ය නම් පැකේජයක් ආනයනය කිරීමට අවශ්‍ය නැත, නමුත් පැකේජයේ නම සහ ශ්‍රිතයේ නම සඳහන් කිරීමෙන් එය අමතන්න. R හි ඇති පැකේජය සහ ශ්‍රිත නාමයන් අතර බෙදුම්කරු ද්විත්ව කොලනයක් වේ. package_name::function_name().

Python හි, ඊට ප්‍රතිවිරුද්ධව, පැකේජයක නම පැහැදිලිව සඳහන් කිරීමෙන් එහි කාර්යයන් ඇමතීම සම්භාව්‍ය ලෙස සැලකේ. පැකේජයක් බාගත කරන විට, එය සාමාන්යයෙන් කෙටි නමක් ලබා දෙයි, උදා. pandas සාමාන්යයෙන් අන්වර්ථ නාමයක් භාවිතා වේ pd. පැකේජ ශ්‍රිතයක් තිතක් හරහා ප්‍රවේශ වේ package_name.function_name().

පැවරුම

R හි, වස්තුවකට අගයක් ලබා දීමට ඊතලයක් භාවිතා කිරීම සාමාන්‍ය දෙයකි. obj_name <- value, තනි සමාන ලකුණකට අවසර ඇතත්, R හි තනි සමාන ලකුණ මූලික වශයෙන් භාවිතා කරනුයේ තර්ක ක්‍රියාත්මක කිරීමට අගයන් යැවීමට ය.

Python හි, පැවරීම සිදු කරනු ලබන්නේ තනි සමාන ලකුණකින් පමණි obj_name = value.

සුචිගත කිරීම

මෙහි තරමක් සැලකිය යුතු වෙනස්කම් ද ඇත. R හි, සුචිගත කිරීම එකකින් ආරම්භ වන අතර එහි ප්‍රතිඵලය වන පරාසයේ සියලුම නිශ්චිත මූලද්‍රව්‍ය ඇතුළත් වේ,

Python හි, සුචිගත කිරීම ආරම්භ වන්නේ බිංදුවෙන් වන අතර තෝරාගත් පරාසය තුළ සුචිගත කිරීමේදී සඳහන් කර ඇති අවසාන මූලද්‍රව්‍යය ඇතුළත් නොවේ. එබැවින් නිර්මාණය කරන්න x[i:j] Python හි j මූලද්‍රව්‍යය ඇතුළත් නොවේ.

R අංකනයේ දී සෘණ සුචිගත කිරීමේ වෙනස්කම් ද ඇත x[-1] අවසාන එක හැර දෛශිකයේ සියලුම අංග ආපසු ලබා දෙනු ඇත. Python හි, සමාන අංකනයක් මඟින් අවසාන මූලද්‍රව්‍යය පමණක් ලබා දෙනු ඇත.

ක්රම සහ OOP

R OOP තමන්ගේම ආකාරයෙන් ක්‍රියාත්මක කරයි, මම මේ ගැන ලිපියේ ලිව්වෙමි "OOP R භාෂාවෙන් (1 කොටස): S3 පන්ති". සාමාන්යයෙන්, R යනු ක්රියාකාරී භාෂාවක් වන අතර, එහි ඇති සියල්ල ශ්රිතයන් මත ගොඩනගා ඇත. එබැවින්, උදාහරණයක් ලෙස, Excel භාවිතා කරන්නන් සඳහා, වෙත යන්න tydiverse එය වඩා පහසු වනු ඇත pandas. මෙය මගේ ආත්මීය මතය විය හැකි වුවද.

කෙටියෙන් කිවහොත්, R හි ඇති වස්තූන්ට ක්‍රම නොමැත (අපි S3 පන්ති ගැන කතා කරන්නේ නම්, නමුත් බොහෝ අඩු පොදු OOP ක්‍රියාත්මක කිරීම් තිබේ). වස්තුවේ පන්තිය අනුව ඒවා වෙනස් ලෙස සකසන සාමාන්‍යකරණය වූ ශ්‍රිත පමණක් ඇත.

නල මාර්ග

සමහර විට මෙය නම විය හැකිය pandas එය සම්පූර්ණයෙන්ම නිවැරදි නොවනු ඇත, නමුත් මම අර්ථය පැහැදිලි කිරීමට උත්සාහ කරමි.

අතරමැදි ගණනය කිරීම් සුරැකීමට සහ වැඩ කරන පරිසරය තුළ අනවශ්ය වස්තූන් නිෂ්පාදනය නොකිරීමට, ඔබට නල මාර්ගයක් භාවිතා කළ හැකිය. එම. ගණනය කිරීමක ප්‍රතිඵලය එක් ශ්‍රිතයක සිට තවත් ශ්‍රිතයකට යවන්න, අතරමැදි ප්‍රතිඵල සුරකින්න එපා.

අපි පහත කේත උදාහරණය ගනිමු, එහිදී අපි වෙනම වස්තූන් තුළ අතරමැදි ගණනය කිරීම් ගබඩා කරමු:

temp_object <- func1()
temp_object2 <- func2(temp_object )
obj <- func3(temp_object2 )

අපි මෙහෙයුම් 3 ක් අනුපිළිවෙලින් සිදු කළ අතර, එක් එක් ප්රතිඵලය වෙනම වස්තුවක සුරකින ලදි. නමුත් ඇත්ත වශයෙන්ම, අපට මෙම අතරමැදි වස්තූන් අවශ්ය නොවේ.

හෝ ඊටත් වඩා නරක, නමුත් Excel භාවිතා කරන්නන්ට වඩාත් හුරුපුරුදුය.

obj  <- func3(func2(func1()))

මෙම අවස්ථාවෙහිදී, අපි අතරමැදි ගණනය කිරීමේ ප්රතිඵල සුරැකුවේ නැත, නමුත් කූඩු සහිත කාර්යයන් සහිත කේතය කියවීම අතිශයින්ම අපහසු වේ.

අපි R හි දත්ත සැකසීම සඳහා ප්රවේශයන් කිහිපයක් දෙස බලමු, ඒවා විවිධ ආකාරවලින් සමාන මෙහෙයුම් සිදු කරයි.

පුස්තකාලයේ නල මාර්ග tidyverse ක්රියාකරු විසින් ක්රියාත්මක කරන ලදී %>%.

obj <- func1() %>% 
            func2() %>%
            func3()

මේ අනුව අපි කාර්යයේ ප්රතිඵලය ගනිමු func1() සහ එය පළමු තර්කය ලෙස සම්මත කරන්න func2(), එවිට අපි මෙම ගණනය කිරීමේ ප්රතිඵලය පළමු තර්කය ලෙස සම්මත කරමු func3(). අවසානයේදී, අපි සිදු කරන ලද සියලුම ගණනය කිරීම් වස්තුවට ලියන්නෙමු obj <-.

ඉහත සඳහන් සියල්ල මෙම meme මගින් වචනවලට වඩා හොඳින් නිරූපණය කර ඇත:
දත්ත සමඟ වැඩ කිරීමට තෝරා ගත යුතු භාෂාව - R හෝ Python? දෙකම! pandas සිට tidyverse සහ data.table සහ back වෙත සංක්‍රමණය වීම

В data.table දම්වැල් සමාන ආකාරයකින් භාවිතා වේ.

newDT <- DT[where, select|update|do, by][where, select|update|do, by][where, select|update|do, by]

එක් එක් වර්ග වරහන් තුළ ඔබට පෙර මෙහෙයුමේ ප්රතිඵලය භාවිතා කළ හැකිය.

В pandas එවැනි මෙහෙයුම් තිතකින් වෙන් කරනු ලැබේ.

obj = df.fun1().fun2().fun3()

එම. අපි අපේ මේසය ගන්නවා df සහ ඇගේ ක්රමය භාවිතා කරන්න fun1(), එවිට අපි ලබාගත් ප්රතිඵලය සඳහා ක්රමවේදය යොදන්නෙමු fun2()පසුව fun3(). ප්රතිඵලය වස්තුවක් බවට සුරැකේ විරුද්ධ .

දත්ත ව්යුහයන්

R සහ Python හි දත්ත ව්‍යුහයන් සමාන නමුත් විවිධ නම් ඇත.

විස්තර
ආර් හි මාතෘකාව
Python/pandas හි නම

වගු ව්යුහය
data.frame, data.table, tibble
දත්ත රාමුව

අගයන් ඒකමාන ලැයිස්තුව
දෛශිකය
පැන්ඩා වල ශ්‍රේණි හෝ පිරිසිදු පයිතන් වල ලැයිස්තුව

බහු මට්ටමේ වගු නොවන ව්යුහය
ලැයිස්තුව
ශබ්දකෝෂය (ආඥාව)

අපි පහත සින්ටැක්ස් හි වෙනත් විශේෂාංග සහ වෙනස්කම් දෙස බලමු.

අපි භාවිතා කරන පැකේජ ගැන වචන කිහිපයක්

පළමුව, මෙම ලිපිය තුළ ඔබ හුරුපුරුදු වන පැකේජ ගැන මම ඔබට ටිකක් කියන්නම්.

පිළිවෙලට

නිල වෙබ් අඩවිය: tidyverse.org
දත්ත සමඟ වැඩ කිරීමට තෝරා ගත යුතු භාෂාව - R හෝ Python? දෙකම! pandas සිට tidyverse සහ data.table සහ back වෙත සංක්‍රමණය වීම
පුස්තකාලය tidyverse RStudio හි ජ්‍යෙෂ්ඨ පර්යේෂණ විද්‍යාඥ Hedley Wickham විසින් ලියන ලද්දකි. tidyverse දත්ත සැකසීම සරල කරන ආකර්ෂණීය පැකේජ සමූහයකින් සමන්විත වන අතර, ඉන් 5ක් CRAN ගබඩාවෙන් ඇති හොඳම බාගැනීම් 10 අතරට ඇතුළත් වේ.

පුස්තකාලයේ හරය පහත පැකේජ වලින් සමන්විත වේ: ggplot2, dplyr, tidyr, readr, purrr, tibble, stringr, forcats. මෙම සෑම පැකේජයක්ම විශේෂිත ගැටළුවක් විසඳීම අරමුණු කර ගෙන ඇත. උදාහරණ වශයෙන් dplyr දත්ත හැසිරවීම සඳහා නිර්මාණය කර ඇත, tidyr දත්ත පිළිවෙලකට ගෙන ඒමට, stringr නූල් සමඟ වැඩ කිරීම සරල කරයි, සහ ggplot2 යනු වඩාත් ජනප්‍රිය දත්ත දෘශ්‍යකරණ මෙවලම්වලින් එකකි.

වාසිය tidyverse SQL විමසුම් භාෂාවට බොහෝ ආකාරවලින් සමාන වන සරල සහ පහසුවෙන් කියවිය හැකි වාක්‍ය ඛණ්ඩය වේ.

දත්ත වගුව

දත්ත සමඟ වැඩ කිරීමට තෝරා ගත යුතු භාෂාව - R හෝ Python? දෙකම! pandas සිට tidyverse සහ data.table සහ back වෙත සංක්‍රමණය වීමනිල වෙබ් අඩවිය: r-datatable.com

විසින් data.table H2O.ai හි Matt Dole වේ.

පුස්තකාලයේ පළමු නිකුතුව 2006 දී සිදු විය.

පැකේජ වාක්‍ය ඛණ්ඩය තුළ මෙන් පහසු නැත tidyverse සහ R හි ඇති සම්භාව්‍ය දත්ත රාමු වඩාත් සිහිපත් කරයි, නමුත් ඒ සමඟම ක්‍රියාකාරීත්වයේ සැලකිය යුතු ලෙස පුළුල් වේ.

මෙම පැකේජයේ ඇති වගුව සමඟ ඇති සියලුම උපාමාරු වර්ග වරහන් වලින් විස්තර කර ඇති අතර, ඔබ සින්ටැක්ස් පරිවර්තනය කරන්නේ නම් data.table SQL හි, ඔබට මෙවැනි දෙයක් ලැබේ: data.table[ WHERE, SELECT, GROUP BY ]

මෙම පැකේජයේ ශක්තිය වන්නේ විශාල දත්ත ප්‍රමාණයක් සැකසීමේ වේගයයි.

පැන්ඩා

නිල වෙබ් අඩවිය: pandas.pydata.org දත්ත සමඟ වැඩ කිරීමට තෝරා ගත යුතු භාෂාව - R හෝ Python? දෙකම! pandas සිට tidyverse සහ data.table සහ back වෙත සංක්‍රමණය වීම

පුස්තකාලයේ නම පැමිණෙන්නේ බහුමාන ව්‍යුහගත තොරතුරු කට්ටල විස්තර කිරීමට භාවිතා කරන "පැනල් දත්ත" යන ආර්ථිකමිතික යෙදුමෙනි.

විසින් pandas ඇමරිකානු වෙස් මැකින්නි ​​වේ.

පයිතන් හි දත්ත විශ්ලේෂණය සම්බන්ධයෙන්, සමාන වේ pandas නැත. ඕනෑම මූලාශ්‍රයකින් දත්ත පැටවීමේ සිට දෘශ්‍යමාන කිරීම දක්වා දත්ත සමඟ ඕනෑම හැසිරවීමක් සිදු කිරීමට ඔබට ඉඩ සලසන ඉතා බහුකාර්ය, ඉහළ මට්ටමේ පැකේජයකි.

අමතර පැකේජ ස්ථාපනය කිරීම

මෙම ලිපියේ සාකච්ඡා කර ඇති පැකේජ මූලික R සහ Python බෙදාහැරීම්වලට ඇතුළත් නොවේ. කුඩා අවවාදයක් ඇතත්, ඔබ Anaconda බෙදාහැරීම ස්ථාපනය කර ඇත්නම්, පසුව අතිරේකව ස්ථාපනය කරන්න pandas අවශ්ය නෑ.

R හි පැකේජ ස්ථාපනය කිරීම

ඔබ අවම වශයෙන් එක් වරක්වත් RStudio සංවර්ධන පරිසරය විවෘත කර ඇත්නම්, අවශ්‍ය පැකේජය R හි ස්ථාපනය කරන්නේ කෙසේදැයි ඔබ දැනටමත් දන්නවා ඇති. පැකේජ ස්ථාපනය කිරීමට, සම්මත විධානය භාවිතා කරන්න. install.packages() එය සෘජුවම R තුළම ධාවනය කිරීමෙන්.

# установка пакетов
install.packages("vroom")
install.packages("readr")
install.packages("dplyr")
install.packages("data.table")

ස්ථාපනය කිරීමෙන් පසු, පැකේජ සම්බන්ධ කිරීම අවශ්ය වේ, බොහෝ අවස්ථාවලදී විධානය භාවිතා වේ library().

# подключение или импорт пакетов в рабочее окружение
library(vroom)
library(readr)
library(dplyr)
library(data.table)

Python හි පැකේජ ස්ථාපනය කිරීම

එබැවින්, ඔබ පිරිසිදු පයිතන් ස්ථාපනය කර ඇත්නම්, එසේ නම් pandas ඔබ එය අතින් ස්ථාපනය කළ යුතුය. ඔබගේ මෙහෙයුම් පද්ධතිය අනුව විධාන රේඛාවක් හෝ ටර්මිනලයක් විවෘත කර පහත විධානය ඇතුල් කරන්න.

pip install pandas

ඉන්පසු අපි පයිතන් වෙත ආපසු ගොස් විධානය සමඟ ස්ථාපිත පැකේජය ආයාත කරන්නෙමු import.

import pandas as pd

දත්ත පූරණය කරමින්

දත්ත කැණීම දත්ත විශ්ලේෂණයේ වැදගත්ම පියවරකි. Python සහ R යන දෙකම, අවශ්‍ය නම්, ඕනෑම මූලාශ්‍රයකින් දත්ත ලබා ගැනීමට ඔබට පුළුල් අවස්ථා සපයයි: දේශීය ගොනු, අන්තර්ජාලයෙන් ගොනු, වෙබ් අඩවි, සියලු වර්ගවල දත්ත සමුදායන්.

දත්ත සමඟ වැඩ කිරීමට තෝරා ගත යුතු භාෂාව - R හෝ Python? දෙකම! pandas සිට tidyverse සහ data.table සහ back වෙත සංක්‍රමණය වීම

ලිපිය පුරාම අපි දත්ත කට්ටල කිහිපයක් භාවිතා කරමු:

  1. Google Analytics වෙතින් බාගත කිරීම් දෙකක්.
  2. ටයිටැනික් මගී දත්ත කට්ටලය.

සියලුම දත්ත මගේ GitHub csv සහ tsv ගොනු ආකාරයෙන්. අපි ඔවුන්ගෙන් ඉල්ලා සිටින්නේ කොහෙන්ද?

R වෙත දත්ත පූරණය කරමින්: tidyverse, vroom, readr

පුස්තකාලයකට දත්ත පැටවීමට tidyverse පැකේජ දෙකක් තිබේ: vroom, readr. vroom වඩාත් නවීන, නමුත් අනාගතයේ දී පැකේජ ඒකාබද්ධ කළ හැකිය.

උපුටා ගැනීමකි නිල ලියකියවිලි vroom.

vroom vs රීඩර්
මුදා හැරීම සිදු කරන්නේ කුමක්ද vroom සඳහා අදහස් readr? දැනට අපි පැකේජ දෙක වෙන වෙනම පරිණාමය වීමට ඉඩ දීමට සැලසුම් කර ඇත, නමුත් අනාගතයේදී අපි පැකේජ ඒකාබද්ධ කරනු ඇත. Vroom හි කම්මැලි කියවීමේ එක් අවාසියක් නම්, ඇතැම් දත්ත ගැටළු කලින් වාර්තා කළ නොහැක, එබැවින් ඒවා ඒකාබද්ධ කරන්නේ කෙසේද යන්න ටිකක් සිතා බැලීම අවශ්‍ය වේ.

vroom vs රීඩර්
මුදා හැරීම යන්නෙන් අදහස් කරන්නේ කුමක්ද? vroom සඳහා readr? මේ මොහොතේ අපි පැකේජ දෙකම වෙන වෙනම සංවර්ධනය කිරීමට සැලසුම් කර ඇත, නමුත් අපි අනාගතයේදී ඒවා ඒකාබද්ධ කරනු ඇත. කම්මැලි කියවීමේ අවාසි වලින් එකක් vroom සමහර දත්ත ගැටළු කලින් වාර්තා කළ නොහැක, එබැවින් ඒවා ඒකාබද්ධ කරන්නේ කෙසේදැයි ඔබ සිතා බැලිය යුතුය.

මෙම ලිපියෙන් අපි දත්ත පැටවීමේ පැකේජ දෙකම දෙස බලමු:

R: vroom පැකේජයට දත්ත පූරණය කරමින්

# install.packages("vroom")
library(vroom)

# Чтение данных
## vroom
ga_nov  <- vroom("https://raw.githubusercontent.com/selesnow/publications/master/data_example/r_python_data/ga_nowember.csv")
ga_dec  <- vroom("https://raw.githubusercontent.com/selesnow/publications/master/data_example/r_python_data/ga_december.csv")
titanic <- vroom("https://raw.githubusercontent.com/selesnow/publications/master/data_example/r_python_data/titanic.csv")

R: readr වෙත දත්ත පූරණය කරමින්

# install.packages("readr")
library(readr)

# Чтение данных
## readr
ga_nov  <- read_tsv("https://raw.githubusercontent.com/selesnow/publications/master/data_example/r_python_data/ga_nowember.csv")
ga_dec  <- read_tsv("https://raw.githubusercontent.com/selesnow/publications/master/data_example/r_python_data/ga_december.csv")
titanic <- read_csv("https://raw.githubusercontent.com/selesnow/publications/master/data_example/r_python_data/titanic.csv")

පැකේජය තුළ vroom, csv / tsv දත්ත ආකෘතිය කුමක් වුවත්, පැටවීම සිදු කරනු ලබන්නේ එකම නමේ ශ්‍රිතය මගිනි. vroom(), පැකේජය තුළ readr අපි එක් එක් ආකෘතිය සඳහා වෙනස් කාර්යයක් භාවිතා කරමු read_tsv() и read_csv().

R වෙත දත්ත පූරණය කරමින්: data.table

В data.table දත්ත පැටවීම සඳහා කාර්යයක් ඇත fread().

R වෙත දත්ත පූරණය කරමින්: data.table පැකේජය

# install.packages("data.table")
library(data.table)

## data.table
ga_nov  <- fread("https://raw.githubusercontent.com/selesnow/publications/master/data_example/r_python_data/ga_nowember.csv")
ga_dec  <- fread("https://raw.githubusercontent.com/selesnow/publications/master/data_example/r_python_data/ga_december.csv")
titanic <- fread("https://raw.githubusercontent.com/selesnow/publications/master/data_example/r_python_data/titanic.csv")

Python හි දත්ත පූරණය කරමින්: pandas

අපි R පැකේජ සමඟ සංසන්දනය කරන්නේ නම්, මෙම අවස්ථාවේ දී වාක්‍ය ඛණ්ඩය ආසන්නතම වේ pandas වනු ඇත readr, නිසා pandas ඕනෑම තැනක සිට දත්ත ඉල්ලා සිටිය හැකි අතර, මෙම පැකේජය තුළ සම්පූර්ණ කාර්ය පවුලක් ඇත read_*().

  • read_csv()
  • read_excel()
  • read_sql()
  • read_json()
  • read_html()

සහ විවිධ ආකෘති වලින් දත්ත කියවීමට නිර්මාණය කර ඇති තවත් බොහෝ කාර්යයන්. නමුත් අපගේ අරමුණු සඳහා එය ප්රමාණවත්ය read_table() හෝ read_csv() තර්ක භාවිතා කරමින් සැප්තැම්බර් තීරු බෙදුම්කරු නියම කිරීමට.

Python හි දත්ත පූරණය කරමින්: pandas

import pandas as pd

ga_nov  = pd.read_csv("https://raw.githubusercontent.com/selesnow/publications/master/data_example/russian_text_in_r/ga_nowember.csv", sep = "t")
ga_dec  = pd.read_csv("https://raw.githubusercontent.com/selesnow/publications/master/data_example/russian_text_in_r/ga_december.csv", sep = "t")
titanic = pd.read_csv("https://raw.githubusercontent.com/selesnow/publications/master/data_example/russian_text_in_r/titanic.csv")

දත්ත රාමු නිර්මාණය කිරීම

වගුව ටයිටැනික්, අපි පැටවූ, ක්ෂේත්රයක් ඇත ලිංගික කාරණා, මගියාගේ ලිංග හඳුනාගැනීම් ගබඩා කරන.

නමුත් මගී ලිංගභේදය අනුව දත්ත වඩාත් පහසු ඉදිරිපත් කිරීම සඳහා, ඔබ ස්ත්‍රී පුරුෂ භාවය කේතයට වඩා නම භාවිතා කළ යුතුය.

මෙය සිදු කිරීම සඳහා, අපි කුඩා නාමාවලියක් සාදන්නෙමු, පිළිවෙලින් තීරු 2 ක් (කේතය සහ ස්ත්‍රී පුරුෂ භාවය) සහ පේළි 2 ක් පමණක් ඇති වගුවක්.

R: tidyverse, dplyr හි දත්ත රාමුවක් නිර්මාණය කිරීම

පහත කේත උදාහරණයේ, අපි ශ්‍රිතය භාවිතයෙන් අවශ්‍ය දත්ත රාමුව නිර්මාණය කරමු tibble() .

R: dplyr හි දත්ත රාමුවක් නිර්මාණය කිරීම

## dplyr
### создаём справочник
gender <- tibble(id = c(1, 2),
                 gender = c("female", "male"))

R: data.table හි දත්ත රාමුවක් නිර්මාණය කිරීම

R: data.table හි දත්ත රාමුවක් නිර්මාණය කිරීම

## data.table
### создаём справочник
gender <- data.table(id = c(1, 2),
                    gender = c("female", "male"))

Python: pandas හි දත්ත රාමුවක් නිර්මාණය කිරීම

В pandas රාමු නිර්මාණය කිරීම අදියර කිහිපයකින් සිදු කරනු ලැබේ, පළමුව අපි ශබ්ද කෝෂයක් නිර්මාණය කරමු, පසුව අපි ශබ්දකෝෂය දත්ත රාමුවක් බවට පරිවර්තනය කරමු.

Python: pandas හි දත්ත රාමුවක් නිර්මාණය කිරීම

# создаём дата фрейм
gender_dict = {'id': [1, 2],
               'gender': ["female", "male"]}
# преобразуем словарь в датафрейм
gender = pd.DataFrame.from_dict(gender_dict)

තීරු තෝරා ගැනීම

ඔබ වැඩ කරන වගු වල දුසිම් ගනනක් හෝ දත්ත තීරු සිය ගණනක් අඩංගු විය හැක. නමුත් විශ්ලේෂණය සිදු කිරීම සඳහා, රීතියක් ලෙස, ඔබට මූලාශ්ර වගුවේ ඇති සියලුම තීරු අවශ්ය නොවේ.

දත්ත සමඟ වැඩ කිරීමට තෝරා ගත යුතු භාෂාව - R හෝ Python? දෙකම! pandas සිට tidyverse සහ data.table සහ back වෙත සංක්‍රමණය වීම

එබැවින්, මූලාශ්‍ර වගුව සමඟ ඔබ විසින් සිදු කරනු ලබන පළමු මෙහෙයුම වන්නේ අනවශ්‍ය තොරතුරු ඉවත් කිරීම සහ මෙම තොරතුරු හිමි මතකය නිදහස් කිරීමයි.

R හි තීරු තෝරා ගැනීම: tidyverse, dplyr

කාරක රීති dplyr SQL විමසුම් භාෂාවට බොහෝ සමාන වේ, ඔබ එය හුරුපුරුදු නම්, ඔබ ඉක්මනින් මෙම පැකේජය ප්‍රගුණ කරනු ඇත.

තීරු තේරීමට, ශ්‍රිතය භාවිතා කරන්න select().

පහත දැක්වෙන ආකාරවලින් ඔබට තීරු තෝරාගත හැකි කේත උදාහරණ පහත දැක්වේ:

  • අවශ්ය තීරු වල නම් ලැයිස්තුගත කිරීම
  • සාමාන්‍ය ප්‍රකාශන භාවිතා කරමින් තීරු නාම වෙත යොමු වන්න
  • දත්ත වර්ගය හෝ තීරුවේ අඩංගු දත්තවල වෙනත් දේපල අනුව

R: dplyr හි තීරු තෝරා ගැනීම

# Выбор нужных столбцов
## dplyr
### выбрать по названию столбцов
select(ga_nov, date, source, sessions)
### исключь по названию столбцов
select(ga_nov, -medium, -bounces)
### выбрать по регулярному выражению, стобцы имена которых заканчиваются на s
select(ga_nov, matches("s$"))
### выбрать по условию, выбираем только целочисленные столбцы
select_if(ga_nov, is.integer)

R: data.table හි තීරු තෝරා ගැනීම

තුළ එකම මෙහෙයුම් data.table තරමක් වෙනස් ලෙස සිදු කරනු ලැබේ, ලිපියේ ආරම්භයේදී මම වර්ග වරහන් තුළ ඇති තර්ක මොනවාද යන්න පිළිබඳ විස්තරයක් ලබා දුනිමි. data.table.

DT[i,j,by]

කොහේද:
මම - කොහෙද, i.e. පේළි මගින් පෙරීම
j - තෝරන්න|යාවත්කාලීන|කරන්න, i.e. තීරු තෝරාගැනීම සහ ඒවා පරිවර්තනය කිරීම
දත්ත සමූහගත කිරීම මගින්

R: data.table හි තීරු තෝරා ගැනීම

## data.table
### выбрать по названию столбцов
ga_nov[ , .(date, source, sessions) ]
### исключь по названию столбцов
ga_nov[ , .SD, .SDcols = ! names(ga_nov) %like% "medium|bounces" ]
### выбрать по регулярному выражению
ga_nov[, .SD, .SDcols = patterns("s$")]

විචල්ය .SD ඔබට සියලුම තීරු වෙත ප්‍රවේශ වීමට ඉඩ සලසයි, සහ .SDcols ඔබට අවශ්‍ය තීරුවල නම් පෙරීමට සාමාන්‍ය ප්‍රකාශන හෝ වෙනත් කාර්යයන් භාවිතයෙන් අවශ්‍ය තීරු පෙරහන් කරන්න.

Python, pandas හි තීරු තෝරා ගැනීම

නම අනුව තීරු තේරීමට pandas ඔවුන්ගේ නම් ලැයිස්තුවක් සැපයීම ප්රමාණවත්ය. සාමාන්‍ය ප්‍රකාශන භාවිතා කරමින් නමින් තීරු තෝරා ගැනීමට හෝ බැහැර කිරීමට, ඔබ ශ්‍රිත භාවිතා කළ යුතුය drop() и filter(), සහ තර්කය අක්ෂය=1, පේළි වලට වඩා තීරු සැකසීමට අවශ්‍ය බව ඔබ පෙන්වා දෙයි.

දත්ත වර්ගය අනුව ක්ෂේත්‍රයක් තේරීමට, ශ්‍රිතය භාවිතා කරන්න select_dtypes(), සහ තර්ක වලට ඇතුළත් වේ හෝ බැහැර කරයි ඔබට තෝරා ගැනීමට අවශ්‍ය ක්ෂේත්‍රවලට අනුරූප දත්ත වර්ග ලැයිස්තුවක් ලබා දෙන්න.

Python: pandas හි තීරු තෝරා ගැනීම

# Выбор полей по названию
ga_nov[['date', 'source', 'sessions']]
# Исключить по названию
ga_nov.drop(['medium', 'bounces'], axis=1)
# Выбрать по регулярному выражению
ga_nov.filter(regex="s$", axis=1)
# Выбрать числовые поля
ga_nov.select_dtypes(include=['number'])
# Выбрать текстовые поля
ga_nov.select_dtypes(include=['object'])

පේළි පෙරීම

උදාහරණයක් ලෙස, මූලාශ්‍ර වගුවේ වසර කිහිපයක දත්ත අඩංගු විය හැක, නමුත් ඔබට විශ්ලේෂණය කිරීමට අවශ්‍ය වන්නේ පසුගිය මාසය පමණි. නැවතත්, අතිරේක රේඛා දත්ත සැකසුම් ක්රියාවලිය මන්දගාමී වන අතර PC මතකය අවහිර කරයි.

දත්ත සමඟ වැඩ කිරීමට තෝරා ගත යුතු භාෂාව - R හෝ Python? දෙකම! pandas සිට tidyverse සහ data.table සහ back වෙත සංක්‍රමණය වීම

R හි පේළි පෙරීම: tydyverse, dplyr

В dplyr ශ්‍රිතය පේළි පෙරීමට භාවිතා කරයි filter(). එය පළමු තර්කය ලෙස දත්ත රාමුවක් ගනී, පසුව ඔබ පෙරීමේ කොන්දේසි ලැයිස්තුගත කරයි.

වගුවක් පෙරීමට තාර්කික ප්‍රකාශන ලියන විට, මෙම අවස්ථාවේදී, උද්ධෘත නොමැතිව සහ වගුවේ නම ප්‍රකාශ නොකර තීරු නාම සඳහන් කරන්න.

පෙරීමට බහු තාර්කික ප්‍රකාශන භාවිතා කරන විට, පහත ක්‍රියාකරුවන් භාවිතා කරන්න:

  • සහ හෝ කොමාව - තාර්කික AND
  • | - තාර්කික හෝ

R: dplyr හි පේළි පෙරීම

# фильтрация строк
## dplyr
### фильтрация строк по одному условию
filter(ga_nov, source == "google")
### фильтр по двум условиям соединённым логическим и
filter(ga_nov, source == "google" & sessions >= 10)
### фильтр по двум условиям соединённым логическим или
filter(ga_nov, source == "google" | sessions >= 10)

R හි පේළි පෙරීම: data.table

මම දැනටමත් ඉහත ලියා ඇති පරිදි, in data.table දත්ත පරිවර්තන වාක්‍ය ඛණ්ඩය හතරැස් වරහන් තුළ කොටා ඇත.

DT[i,j,by]

කොහේද:
මම - කොහෙද, i.e. පේළි මගින් පෙරීම
j - තෝරන්න|යාවත්කාලීන|කරන්න, i.e. තීරු තෝරාගැනීම සහ ඒවා පරිවර්තනය කිරීම
දත්ත සමූහගත කිරීම මගින්

තර්කය පේළි පෙරීමට භාවිතා කරයි i, හතරැස් වරහන් තුළ පළමු ස්ථානය ඇති.

උද්ධෘත ලකුණු නොමැතිව සහ වගුවේ නම සඳහන් නොකර තාර්කික ප්‍රකාශන වලින් තීරු ප්‍රවේශ වේ.

තාර්කික ප්‍රකාශන එකිනෙක සම්බන්ධ වන ආකාරයටම වේ dplyr සහ සහ | ක්‍රියාකරුවන් හරහා.

R හි පේළි පෙරීම: data.table

## data.table
### фильтрация строк по одному условию
ga_nov[source == "google"]
### фильтр по двум условиям соединённым логическим и
ga_nov[source == "google" & sessions >= 10]
### фильтр по двум условиям соединённым логическим или
ga_nov[source == "google" | sessions >= 10]

Python හි නූල් පෙරීම: pandas

පේළි අනුව පෙරහන් කරන්න pandas පෙරීමට සමානයි data.table, සහ හතරැස් වරහන් වලින් සිදු කෙරේ.

මෙම අවස්ථාවෙහිදී, තීරු වෙත ප්‍රවේශය අවශ්‍යයෙන්ම සිදු කරනු ලබන්නේ දත්ත රාමුවේ නම සඳහන් කිරීමෙනි; එවිට තීරු නම වර්ග වරහන් වල උද්ධෘත ලකුණු වලින් ද දැක්විය හැකිය (උදාහරණයකි df['col_name']), හෝ කාල සීමාවෙන් පසු උපුටා දැක්වීම් නොමැතිව (උදාහරණයකි df.col_name).

ඔබට කොන්දේසි කිහිපයකින් දත්ත රාමුවක් පෙරීමට අවශ්‍ය නම්, සෑම කොන්දේසියක්ම වරහන් තුළ තැබිය යුතුය. තාර්කික තත්වයන් ක්රියාකරුවන් විසින් එකිනෙකා සමඟ සම්බන්ධ වේ & и |.

Python හි නූල් පෙරීම: pandas

# Фильтрация строк таблицы
### фильтрация строк по одному условию
ga_nov[ ga_nov['source'] == "google" ]
### фильтр по двум условиям соединённым логическим и
ga_nov[(ga_nov['source'] == "google") & (ga_nov['sessions'] >= 10)]
### фильтр по двум условиям соединённым логическим или
ga_nov[(ga_nov['source'] == "google") | (ga_nov['sessions'] >= 10)]

දත්ත සමූහගත කිරීම සහ එකතු කිරීම

දත්ත විශ්ලේෂණයේදී බහුලව භාවිතා වන මෙහෙයුම් වලින් එකක් වන්නේ සමූහගත කිරීම සහ එකතු කිරීමයි.

දත්ත සමඟ වැඩ කිරීමට තෝරා ගත යුතු භාෂාව - R හෝ Python? දෙකම! pandas සිට tidyverse සහ data.table සහ back වෙත සංක්‍රමණය වීම

මෙම මෙහෙයුම් සිදු කිරීම සඳහා වන වාක්‍ය ඛණ්ඩය අප සමාලෝචනය කරන සියලුම පැකේජ පුරා විසිරී ඇත.

මෙම අවස්ථාවේදී, අපි උදාහරණයක් ලෙස දත්ත රාමුවක් ගනිමු ටයිටැනික්, සහ කුටි පන්තිය අනුව ප්‍රවේශපත්‍ර ගණන සහ සාමාන්‍ය පිරිවැය ගණනය කරන්න.

R: tidyverse, dplyr හි දත්ත සමූහගත කිරීම සහ එකතු කිරීම

В dplyr ශ්‍රිතය කණ්ඩායම් කිරීම සඳහා භාවිතා වේ group_by(), සහ එකතු කිරීම සඳහා summarise(). ඇත්ත වශයෙන්ම, dplyr මුළු පවුලම කාර්යයන් ඇත summarise_*(), නමුත් මෙම ලිපියේ අරමුණ මූලික සින්ටැක්ස් සංසන්දනය කිරීමයි, එබැවින් අපි එවැනි කැලෑවකට නොයන්නෙමු.

මූලික එකතු කිරීමේ කාර්යයන්:

  • sum() - සාරාංශය
  • min() / max() - අවම සහ උපරිම අගය
  • mean() - සාමාන්ය
  • median() - මධ්යන්ය
  • length() - ප්රමාණය

R: dplyr හි සමූහගත කිරීම සහ එකතු කිරීම

## dplyr
### группировка и агрегация строк
group_by(titanic, Pclass) %>%
  summarise(passangers = length(PassengerId),
            avg_price  = mean(Fare))

කාර්යය කිරීමට group_by() අපි පළමු තර්කය ලෙස මේසය පසු කළෙමු ටයිටැනික්, පසුව ක්ෂේත්රය පෙන්වා දුන්නේය Pclass, අපි අපගේ මේසය කාණ්ඩගත කරනු ඇත. ක්රියාකරු භාවිතා කරන මෙම මෙහෙයුමේ ප්රතිඵලය %>% ශ්‍රිතයට පළමු තර්කය ලෙස සම්මත විය summarise(), සහ තවත් ක්ෂේත්‍ර 2ක් එක් කළා: මගීන් и සාමාන්‍ය_මිල. පළමුව, ශ්රිතය භාවිතා කිරීම length() ටිකට් ගණන ගණනය කළ අතර, දෙවනුව ශ්‍රිතය භාවිතා කරයි mean() සාමාන්‍ය ටිකට් මිලට ලැබුණි.

R: data.table හි දත්ත සමූහගත කිරීම සහ එකතු කිරීම

В data.table තර්කය එකතු කිරීම සඳහා භාවිතා වේ j හතරැස් වරහන් තුළ දෙවන ස්ථානය ඇති, සහ කණ්ඩායම් කිරීම සඳහා by හෝ keyby, තුන්වන ස්ථානය ඇති.

මෙම නඩුවේ එකතු කිරීමේ කාර්යයන් ලැයිස්තුව විස්තර කර ඇති ඒවාට සමාන වේ dplyr, නිසා මේවා මූලික R වාක්‍ය ඛණ්ඩයේ ශ්‍රිත වේ.

R: data.table හි සමූහගත කිරීම සහ එකතු කිරීම

## data.table
### фильтрация строк по одному условию
titanic[, .(passangers = length(PassengerId),
            avg_price  = mean(Fare)),
        by = Pclass]

Python: pandas හි දත්ත සමූහගත කිරීම සහ එකතු කිරීම

කණ්ඩායම් කිරීම pandas සමානයි dplyr, නමුත් එකතු කිරීම සමාන නොවේ dplyr මත නොවේ data.table.

කණ්ඩායම් කිරීමට, ක්රමය භාවිතා කරන්න groupby(), දත්ත රාමුව කාණ්ඩගත කරන තීරු ලැයිස්තුවක් ඔබ විසින් සම්මත කළ යුතුය.

එකතු කිරීම සඳහා, ඔබට ක්රමය භාවිතා කළ හැකිය agg()ශබ්දකෝෂයක් පිළිගන්නා. ශබ්ද කෝෂ යතුරු යනු ඔබ එකතු කිරීමේ කාර්යයන් යොදන තීරු වන අතර අගයන් යනු එකතු කිරීමේ ශ්‍රිතවල නම් වේ.

එකතු කිරීමේ කාර්යයන්:

  • sum() - සාරාංශය
  • min() / max() - අවම සහ උපරිම අගය
  • mean() - සාමාන්ය
  • median() - මධ්යන්ය
  • count() - ප්රමාණය

උත්සවය reset_index() පහත උදාහරණයේ එය කැදලි දර්ශක නැවත සැකසීමට භාවිතා කරයි pandas දත්ත එකතු කිරීමෙන් පසු පෙරනිමි.

සංකේතය ඊළඟ පේළියට යාමට ඔබට ඉඩ සලසයි.

Python හි සමූහගත කිරීම සහ එකතු කිරීම: pandas

# группировка и агрегация данных
titanic.groupby(["Pclass"]).
    agg({'PassengerId': 'count', 'Fare': 'mean'}).
        reset_index()

වගු වල සිරස් එකතු කිරීම

ඔබ එකම ව්‍යුහයේ වගු දෙකක් හෝ වැඩි ගණනක් සම්බන්ධ කරන මෙහෙයුමක්. අප පූරණය කළ දත්තවල වගු අඩංගු වේ ga_nov и ga_දෙසැ. මෙම වගු ව්යුහයෙන් සමාන වේ, i.e. එකම තීරු සහ මෙම තීරු වල දත්ත වර්ග තිබේ.

දත්ත සමඟ වැඩ කිරීමට තෝරා ගත යුතු භාෂාව - R හෝ Python? දෙකම! pandas සිට tidyverse සහ data.table සහ back වෙත සංක්‍රමණය වීම

මෙය නොවැම්බර් සහ දෙසැම්බර් මාසය සඳහා Google Analytics වෙතින් උඩුගත කිරීමකි, මෙම කොටසේදී අපි මෙම දත්ත එක වගුවකට ඒකාබද්ධ කරන්නෙමු.

R හි සිරස් අතට සම්බන්ධ වන වගු: tidyverse, dplyr

В dplyr ඔබට ශ්‍රිතය භාවිතයෙන් වගු 2ක් එකකට ඒකාබද්ධ කළ හැක bind_rows(), එහි තර්ක ලෙස වගු පසු කිරීම.

R: dplyr හි පේළි පෙරීම

# Вертикальное объединение таблиц
## dplyr
bind_rows(ga_nov, ga_dec)

R: data.table හි සිරස්ව සම්බන්ධ වන වගු

එය ද කිසිවක් සංකීර්ණ නොවේ, අපි භාවිතා කරමු rbind().

R හි පේළි පෙරීම: data.table

## data.table
rbind(ga_nov, ga_dec)

Python හි සිරස් අතට සම්බන්ධ වන වගු: pandas

В pandas මෙම කාර්යය වගු සම්බන්ධ කිරීමට භාවිතා කරයි concat(), ඒවා ඒකාබද්ධ කිරීම සඳහා ඔබ රාමු ලැයිස්තුවක් සම්මත කළ යුතුය.

Python හි නූල් පෙරීම: pandas

# вертикальное объединение таблиц
pd.concat([ga_nov, ga_dec])

වගු වල තිරස් එකතු කිරීම

දෙවන සිට තීරු පළමු වගුවට යතුරෙන් එකතු කරන මෙහෙයුමක්. සමහර විමර්ශන දත්ත (උදාහරණයක් ලෙස, නිෂ්පාදනයේ පිරිවැය) සමඟ කරුණු වගුවක් (උදාහරණයක් ලෙස, විකුණුම් දත්ත සහිත වගුවක්) පොහොසත් කිරීමේදී එය බොහෝ විට භාවිතා වේ.

දත්ත සමඟ වැඩ කිරීමට තෝරා ගත යුතු භාෂාව - R හෝ Python? දෙකම! pandas සිට tidyverse සහ data.table සහ back වෙත සංක්‍රමණය වීම

සම්බන්ධක වර්ග කිහිපයක් තිබේ:

දත්ත සමඟ වැඩ කිරීමට තෝරා ගත යුතු භාෂාව - R හෝ Python? දෙකම! pandas සිට tidyverse සහ data.table සහ back වෙත සංක්‍රමණය වීම

කලින් පටවන ලද වගුවේ ටයිටැනික් අපට තීරුවක් තිබේ ලිංගික කාරණා, මගියාගේ ලිංග කේතයට අනුරූප වේ:

1 - ගැහැණු
2 - පිරිමි

එසේම, අපි වගුවක් නිර්මාණය කර ඇත - විමර්ශන පොතක් ස්ත්රී පුරුෂ භාවය. මගීන්ගේ ලිංගභේදය පිළිබඳ දත්ත වඩාත් පහසු ඉදිරිපත් කිරීම සඳහා, අපි නාමාවලියෙන් ස්ත්‍රී පුරුෂ භාවයේ නම එක් කළ යුතුය. ස්ත්රී පුරුෂ භාවය මේසයට ටයිටැනික්.

R හි තිරස් වගුව සම්බන්ධ කරන්න: tidyverse, dplyr

В dplyr තිරස් සම්බන්ධ කිරීම සඳහා මුළු පවුලම කාර්යයන් ඇත:

  • inner_join()
  • left_join()
  • right_join()
  • full_join()
  • semi_join()
  • nest_join()
  • anti_join()

මගේ භාවිතයේ බහුලව භාවිතා වන්නේ left_join().

පළමු තර්ක දෙක ලෙස, ඉහත ලැයිස්තුගත කර ඇති ශ්‍රිතයන් සම්බන්ධ වීමට වගු දෙකක් ගන්නා අතර තුන්වන තර්කය ලෙස by ඔබ සම්බන්ධ වීමට තීරු සඳහන් කළ යුතුය.

R: dplyr හි තිරස් වගුව සම්බන්ධ කරන්න

# объединяем таблицы
left_join(titanic, gender,
          by = c("Sex" = "id"))

R හි වගු තිරස් එකතු කිරීම: data.table

В data.table ඔබ කාර්යය භාවිතා කරමින් යතුර මගින් වගු සම්බන්ධ කිරීමට අවශ්‍ය වේ merge().

data.table හි ඒකාබද්ධ() ශ්‍රිතය සඳහා තර්ක

  • x, y - සම්බන්ධ වීම සඳහා වගු
  • by - වගු දෙකෙහිම එකම නම තිබේ නම් සම්බන්ධ වීමට යතුර වන තීරුව
  • by.x, by.y — තීරු නම් ඒකාබද්ධ කළ යුතු අතර, ඒවාට වගුවල විවිධ නම් තිබේ නම්
  • all, all.x, all.y — Join type, all, all row all row from the tables දෙකෙන්ම, all.x LEFT JOIN මෙහෙයුමට අනුරූප වේ (පළමු වගුවේ සියලුම පේළි වලින් ඉවත් වනු ඇත), all.y — අනුරූප වේ RIGHT JOIN මෙහෙයුම (දෙවන වගුවේ සියලුම පේළි ඉතිරි වනු ඇත).

R හි වගු තිරස් එකතු කිරීම: data.table

# объединяем таблицы
merge(titanic, gender, by.x = "Sex", by.y = "id", all.x = T)

Python: pandas හි තිරස් වගුව සම්බන්ධ වේ

මෙන්ම තුළ data.tableඇතුළත pandas මෙම කාර්යය වගු සම්බන්ධ කිරීමට භාවිතා කරයි merge().

පැන්ඩා වල ඒකාබද්ධ() ක්‍රියාකාරීත්වයේ තර්ක

  • කෙසේද - සම්බන්ධතා වර්ගය: වම්, දකුණ, පිටත, අභ්යන්තර
  • මත - වගු දෙකෙහිම එකම නම තිබේ නම් එය යතුරකි
  • left_on, right_on — ප්‍රධාන තීරු වල නම්, ඒවාට වගු වල විවිධ නම් තිබේ නම්

Python: pandas හි තිරස් වගුව සම්බන්ධ වේ

# объединяем по ключу
titanic.merge(gender, how = "left", left_on = "Sex", right_on = "id")

මූලික කවුළු කාර්යයන් සහ ගණනය කළ තීරු

ජනේල ශ්‍රිත සමස්ථ කිරීමේ ශ්‍රිතවලට සමාන වන අතර දත්ත විශ්ලේෂණයේදීද බොහෝ විට භාවිතා වේ. නමුත් aggregation functions මෙන් නොව window functions මගින් outgoing dataframe හි පේළි ගණන වෙනස් නොකරයි.

දත්ත සමඟ වැඩ කිරීමට තෝරා ගත යුතු භාෂාව - R හෝ Python? දෙකම! pandas සිට tidyverse සහ data.table සහ back වෙත සංක්‍රමණය වීම

අත්යවශ්යයෙන්ම, කවුළු ශ්රිතය භාවිතා කරමින්, අපි යම් නිර්ණායකයකට අනුව ලැබෙන දත්ත රාමුව කොටස් වලට බෙදන්නෙමු, i.e. ක්ෂේත්‍රයක හෝ ක්ෂේත්‍ර කිහිපයක අගය අනුව. තවද අපි සෑම කවුළුවකම අංක ගණිතමය මෙහෙයුම් සිදු කරන්නෙමු. මෙම මෙහෙයුම්වල ප්රතිඵලය එක් එක් පේළිය තුළ ආපසු ලබා දෙනු ඇත, i.e. වගුවේ ඇති මුළු පේළි ගණන වෙනස් නොකර.

උදාහරණයක් ලෙස, අපි මේසය ගනිමු ටයිටැනික්. එක් එක් ප්‍රවේශ පත්‍රයක මිල එහි කුටි පන්තිය තුළ කොපමණ ප්‍රතිශතයක් දැයි අපට ගණනය කළ හැක.

මෙය සිදු කිරීම සඳහා, අපි එක් එක් පේළියේ මෙම පේළියේ ටිකට් පත අයත් වන වත්මන් කුටි පන්තිය සඳහා ටිකට් පතක මුළු පිරිවැය ලබා ගත යුතුය, ඉන්පසු එක් එක් ටිකට් පතක මිල එකම කුටි පන්තියේ සියලුම ප්‍රවේශපත්‍රවල මුළු පිරිවැයෙන් බෙදන්න. .

R හි කවුළුව ක්‍රියා කරයි: tidyverse, dplyr

නව තීරු එකතු කිරීමට, පේළි සමූහකරණය භාවිතා නොකර, in dplyr කාර්යය ඉටු කරයි mutate().

ක්ෂේත්‍ර අනුව දත්ත සමූහගත කිරීමෙන් ඔබට ඉහත විස්තර කර ඇති ගැටළුව විසඳා ගත හැක Pclass සහ ක්ෂේත්‍රය නව තීරුවක සාරාංශ කිරීම ගාස්තු. ඊළඟට, වගුව ඉවත් කර ක්ෂේත්‍ර අගයන් බෙදන්න ගාස්තු පෙර පියවරේදී සිදු වූ දෙයට.

R: dplyr හි කවුළුව ක්‍රියා කරයි

group_by(titanic, Pclass) %>%
  mutate(Pclass_cost = sum(Fare)) %>%
  ungroup() %>%
  mutate(ticket_fare_rate = Fare / Pclass_cost)

R හි කවුළු කාර්යයන්: data.table

විසඳුම් ඇල්ගොරිතම තුළ මෙන් ම පවතී dplyr, අපි ක්ෂේත්‍රයෙන් මේසය ජනේලවලට බෙදිය යුතුයි Pclass. එක් එක් පේළියට අනුරූප කණ්ඩායම සඳහා වන මුදල නව තීරුවක ප්‍රතිදානය කර, එහි කණ්ඩායමේ එක් එක් ටිකට් පතක මිලෙහි කොටස ගණනය කරන තීරුවක් එක් කරන්න.

වෙත නව තීරු එකතු කිරීමට data.table ක්රියාකරු පැමිණ සිටී :=. පහත දැක්වෙන්නේ පැකේජය භාවිතයෙන් ගැටළුවක් විසඳීමේ උදාහරණයකි data.table

R හි කවුළු කාර්යයන්: data.table

titanic[,c("Pclass_cost","ticket_fare_rate") := .(sum(Fare), Fare / Pclass_cost), 
        by = Pclass]

Python හි කවුළු ක්‍රියාකාරකම්: pandas

නව තීරුවක් එක් කිරීමට එක් ක්‍රමයක් pandas - කාර්යය භාවිතා කරන්න assign(). පේළි කාණ්ඩ කිරීමකින් තොරව, මැදිරි පන්තිය අනුව ටිකට්පත්වල පිරිවැය සාරාංශ කිරීම සඳහා, අපි කාර්යය භාවිතා කරන්නෙමු transform().

පහත දැක්වෙන්නේ අපි මේසයට එකතු කරන විසඳුමක උදාහරණයකි ටයිටැනික් එකම තීරු 2.

Python හි කවුළු ක්‍රියාකාරකම්: pandas

titanic.assign(Pclass_cost      =  titanic.groupby('Pclass').Fare.transform(sum),
               ticket_fare_rate = lambda x: x['Fare'] / x['Pclass_cost'])

කාර්යයන් සහ ක්රම ලිපි හුවමාරු වගුව

පහත දැක්වෙන්නේ අප සලකා බැලූ පැකේජවල දත්ත සමඟ විවිධ මෙහෙයුම් සිදු කිරීමේ ක්‍රම අතර ලිපි හුවමාරු වගුවකි.

විස්තර
පිළිවෙලට
දත්ත වගුව
පැන්ඩා

දත්ත පූරණය කරමින්
vroom()/ readr::read_csv() / readr::read_tsv()
fread()
read_csv()

දත්ත රාමු නිර්මාණය කිරීම
tibble()
data.table()
dict() + from_dict()

තීරු තෝරා ගැනීම
select()
තර්කය j, හතරැස් වරහන් තුළ දෙවන ස්ථානය
අපි අවශ්‍ය තීරු ලැයිස්තුව වර්ග වරහන් වලින් සම්මත කරමු / drop() / filter() / select_dtypes()

පේළි පෙරීම
filter()
තර්කය i, හතරැස් වරහන් තුළ පළමු ස්ථානය
අපි පෙරීමේ කොන්දේසි වර්ග වරහන් වලින් ලැයිස්තුගත කරමු / filter()

සමූහගත කිරීම සහ එකතු කිරීම
group_by() + summarise()
තර්ක j + by
groupby() + agg()

වගු වල සිරස් එකමුතුව (UNION)
bind_rows()
rbind()
concat()

වගු වල තිරස් එකතු කිරීම (JOIN)
left_join() / *_join()
merge()
merge()

මූලික කවුළු කාර්යයන් සහ ගණනය කළ තීරු එකතු කිරීම
group_by() + mutate()
තර්කය j ක්රියාකරු භාවිතා කරමින් := + තර්කය by
transform() + assign()

නිගමනය

සමහර විට ලිපියේ මම විස්තර කළේ දත්ත සැකසීමේ වඩාත්ම ප්‍රශස්ත ක්‍රියාත්මක කිරීම් නොවේ, එබැවින් ඔබ අදහස් දැක්වීමේදී මගේ වැරදි නිවැරදි කරන්නේ නම් හෝ ලිපියේ දක්වා ඇති තොරතුරු R / Python හි දත්ත සමඟ වැඩ කිරීම සඳහා වෙනත් ශිල්පීය ක්‍රම සමඟ අතිරේක කළහොත් මම සතුටු වෙමි.

මා ඉහත ලියා ඇති පරිදි, ලිපියේ අරමුණ වූයේ වඩා හොඳ කුමන භාෂාවද යන්න පිළිබඳව කෙනෙකුගේ මතය පැටවීම නොව, භාෂා දෙකම ඉගෙන ගැනීමට හෝ අවශ්‍ය නම් ඒවා අතරට සංක්‍රමණය වීමට ඇති අවස්ථාව සරල කිරීමයි.

ඔබ ලිපියට කැමති නම්, මගේ නව ග්‍රාහකයින් ලැබීම ගැන මම සතුටු වෙමි ප්රථම අදියර и විදුලි පණිවුඩ නාලිකා.

ඡන්දය

පහත සඳහන් පැකේජවලින් ඔබ ඔබේ කාර්යයේදී භාවිතා කරන්නේ කුමක්ද?

අදහස් දැක්වීමේදී ඔබට ඔබේ තේරීමට හේතුව ලිවිය හැකිය.

සමීක්ෂණයට සහභාගී විය හැක්කේ ලියාපදිංචි පරිශීලකයින්ට පමණි. පුරන්නකරුණාකර.

ඔබ භාවිතා කරන දත්ත සැකසුම් පැකේජය (ඔබට විකල්ප කිහිපයක් තෝරාගත හැක)

  • 45,2%පිළිවෙලට 19

  • 33,3%data.table14

  • 54,8%pandas23

පරිශීලකයින් 42 දෙනෙක් ඡන්දය දුන්හ. පරිශීලකයින් 9 දෙනෙක් ඡන්දය දීමෙන් වැළකී සිටියහ.

මූලාශ්රය: www.habr.com

අදහස් එක් කරන්න