දත්ත විද්‍යාඥයාගේ සටහන්: දත්ත විමසුම් භාෂා පිළිබඳ පුද්ගලීකරණය කළ සමාලෝචනයක්

දත්ත විද්‍යාඥයාගේ සටහන්: දත්ත විමසුම් භාෂා පිළිබඳ පුද්ගලීකරණය කළ සමාලෝචනයක්
මම ඔබට පෞද්ගලික අත්දැකීමෙන් කියන්නේ කොතැනක සහ කවදාද ප්‍රයෝජනවත් වූයේ කුමක්ද යන්නයි. එය දළ විශ්ලේෂණයක් සහ නිබන්ධනයකි, එවිට ඔබට තවදුරටත් හාරා ගත හැක්කේ කුමක්ද සහ කොතැනද යන්න පැහැදිලි වේ - නමුත් මෙහිදී මට තනිකරම ආත්මීය පුද්ගලික අත්දැකීමක් ඇත, සමහර විට සියල්ල ඔබට සම්පූර්ණයෙන්ම වෙනස් විය හැකිය.

විමසුම් භාෂා දැන ගැනීම සහ භාවිතා කිරීමට හැකි වීම වැදගත් වන්නේ ඇයි? එහි හරය තුළ, දත්ත විද්‍යාවට කාර්යයේ වැදගත් අදියර කිහිපයක් ඇති අතර, පළමු හා වඩාත්ම වැදගත් (එය නොමැතිව, නිසැකවම කිසිවක් ක්‍රියා නොකරනු ඇත!) දත්ත ලබා ගැනීම හෝ උපුටා ගැනීමයි. බොහෝ විට, දත්ත යම් ආකාරයක යම් තැනක වාඩි වී ඇති අතර එතැන් සිට "නැවත ලබා ගැනීම" අවශ්ය වේ. 

විමසුම් භාෂා ඔබට මෙම දත්ත උකහා ගැනීමට ඉඩ දෙයි! අද මම ඔබට ප්‍රයෝජනවත් වී ඇති එම විමසුම් භාෂා ගැන ඔබට කියමි, මම ඔබට කියමි සහ හරියටම කොතැනද සහ කෙසේද යන්න ඔබට පෙන්වන්නම් - එය අධ්‍යයනය කිරීමට අවශ්‍ය ඇයි?

දත්ත විමසුම් වර්ගවල ප්‍රධාන කොටස් තුනක් ඇත, ඒවා අපි මෙම ලිපියෙන් සාකච්ඡා කරමු:

  • "සම්මත" විමසුම් භාෂාවන් යනු සම්බන්ධතා වීජ ගණිතය හෝ SQL වැනි විමසුම් භාෂාවක් ගැන කතා කරන විට පොදුවේ තේරුම් ගත හැකි දේ වේ.
  • ස්ක්‍රිප්ටින් විමසුම් භාෂා: උදාහරණයක් ලෙස, පයිතන් දේවල් පැන්ඩා, numpy හෝ shell scripting.
  • දැනුම ප්‍රස්ථාර සහ ප්‍රස්තාර දත්ත සමුදායන් සඳහා භාෂා විමසන්න.

මෙහි ලියා ඇති සෑම දෙයක්ම පුද්ගලික අත්දැකීමක් පමණි, ප්‍රයෝජනවත් වූ දේ, තත්වයන් පිළිබඳ විස්තරයක් සහ “එය අවශ්‍ය වූයේ ඇයි” - සෑම කෙනෙකුටම සමාන තත්වයන් ඔබට පැමිණිය හැකි ආකාරය පිළිබඳව උත්සාහ කළ හැකි අතර මෙම භාෂා තේරුම් ගැනීමෙන් ඒවා කල්තියා සූදානම් කිරීමට උත්සාහ කරන්න. ඔබට ව්‍යාපෘතියක් සඳහා (හදිසියෙන්) අයදුම් කිරීමට හෝ ඒවා අවශ්‍ය ව්‍යාපෘතියකට යාමට පෙර.

"සම්මත" විමසුම් භාෂා

සම්මත විමසුම් භාෂාවන් යනු අප සාමාන්‍යයෙන් විමසුම් ගැන කතා කරන විට ඒවා ගැන සිතන අර්ථයෙනි.

සම්බන්ධතා වීජ ගණිතය

සම්බන්ධතා වීජ ගණිතය අද අවශ්‍ය වන්නේ ඇයි? විමසුම් භාෂා නිශ්චිත ආකාරයකින් ව්‍යුහගත වී ඇත්තේ ඇයිද යන්න පිළිබඳව හොඳ අවබෝධයක් ලබා ගැනීමට සහ ඒවා සවිඥානිකව භාවිතා කිරීමට නම්, ඔබ ඒවාට යටින් පවතින හරය තේරුම් ගත යුතුය.

සම්බන්ධතා වීජ ගණිතය යනු කුමක්ද?

විධිමත් නිර්වචනය පහත පරිදි වේ: සම්බන්ධතා වීජ ගණිතය යනු සම්බන්ධතා දත්ත ආකෘතියක සම්බන්ධතා මත සංවෘත මෙහෙයුම් පද්ධතියකි. එය ටිකක් මානුෂීය ලෙස පැවසුවහොත්, මෙය වගු මත මෙහෙයුම් පද්ධතියකි, එවිට ප්රතිඵලය සෑම විටම වගුවකි.

සියලු සම්බන්ධතා මෙහෙයුම් බලන්න මේ Habr වෙතින් ලිපිය - ඔබ දැනගත යුත්තේ ඇයි සහ එය ප්‍රයෝජනවත් වන්නේ කොතැනද යන්න අපි මෙහි විස්තර කරමු.

ඇයි?

විමසුම් භාෂාවන් යනු කුමක්ද යන්න සහ විශේෂිත විමසුම් භාෂාවන්හි ප්‍රකාශන පිටුපස ඇති මෙහෙයුම් මොනවාද යන්න තේරුම් ගැනීමට පටන් ගැනීම බොහෝ විට විමසුම් භාෂාවල ක්‍රියා කරන්නේ කුමක්ද සහ කෙසේද යන්න පිළිබඳ ගැඹුරු අවබෝධයක් ලබා දෙයි.

දත්ත විද්‍යාඥයාගේ සටහන්: දත්ත විමසුම් භාෂා පිළිබඳ පුද්ගලීකරණය කළ සමාලෝචනයක්
වෙතින් උපුටා ගන්නා ලදී මේ ලිපි. මෙහෙයුමක උදාහරණයක්: සම්බන්ධ වීම, වගු සම්බන්ධ කිරීම.

අධ්යයනය සඳහා ද්රව්ය:

ස්ටැන්ෆර්ඩ් වෙතින් හොඳ හඳුන්වාදීමේ පාඨමාලාව. පොදුවේ ගත් කල, සම්බන්ධතා වීජ ගණිතය සහ න්‍යාය පිළිබඳ ද්‍රව්‍ය රාශියක් ඇත - Coursera, Udacity. හොඳ ඇතුළුව අන්තර්ජාලයේ විශාල ද්‍රව්‍ය ප්‍රමාණයක් ද තිබේ අධ්යයන පාඨමාලා. මගේ පුද්ගලික උපදෙස: ඔබ සම්බන්ධතා වීජ ගණිතය හොඳින් තේරුම් ගත යුතුය - මෙය මූලික කරුණු වල පදනමයි.

SQL

දත්ත විද්‍යාඥයාගේ සටහන්: දත්ත විමසුම් භාෂා පිළිබඳ පුද්ගලීකරණය කළ සමාලෝචනයක්
වෙතින් උපුටා ගන්නා ලදී මේ ලිපි.

SQL යනු අත්‍යවශ්‍යයෙන්ම සම්බන්ධක වීජ ගණිතය ක්‍රියාත්මක කිරීමකි - වැදගත් අවවාදයක් සහිතව, SQL ප්‍රකාශන වේ! එනම්, සම්බන්ධක වීජ ගණිතයේ භාෂාවෙන් විමසුමක් ලියන විට, ඔබ ඇත්ත වශයෙන්ම ගණනය කරන්නේ කෙසේදැයි කියනු ඇත - නමුත් SQL සමඟ ඔබට උකහා ගැනීමට අවශ්‍ය දේ සඳහන් කරයි, එවිට DBMS දැනටමත් සම්බන්ධතා වීජ ගණිතයේ භාෂාවෙන් (ඵලදායී) ප්‍රකාශන ජනනය කරයි (ඒවායේ) සමානාත්මතාවය අප ලෙස හැඳින්වේ කෝඩ්ගේ ප්‍රමේයය).

දත්ත විද්‍යාඥයාගේ සටහන්: දත්ත විමසුම් භාෂා පිළිබඳ පුද්ගලීකරණය කළ සමාලෝචනයක්
වෙතින් උපුටා ගන්නා ලදී මේ ලිපි.

ඇයි?

Relational DBMSs: Oracle, Postgres, SQL Server, යනාදිය තවමත් සෑම තැනකම පාහේ පවතින අතර ඔබට ඔවුන් සමඟ අන්තර් ක්‍රියා කිරීමට සිදුවන ඇදහිය නොහැකි තරම් ඉහළ අවස්ථාවක් තිබේ, එයින් අදහස් කරන්නේ ඔබට SQL (බොහෝ දුරට ඉඩ ඇති) කියවීමට හෝ එය ලිවීමට සිදුවනු ඇති බවයි ( විය නොහැක්කක්ද නොවේ).

කියවා පාඩම් කළ යුතු දේ

ඉහත සබැඳි වලට අනුව (සම්බන්ධතා වීජ ගණිතය ගැන), ඇදහිය නොහැකි තරම් ද්‍රව්‍ය ප්‍රමාණයක් ඇත, උදාහරණයක් ලෙස, මේ.

මාර්ගය වන විට, NoSQL යනු කුමක්ද?

"NoSQL" යන පදය නිරපේක්ෂ ස්වයංසිද්ධ සම්භවයක් ඇති බවත් එය පිටුපස සාමාන්‍යයෙන් පිළිගත් නිර්වචනයක් හෝ විද්‍යාත්මක ආයතනයක් නොමැති බවත් නැවත වරක් අවධාරණය කිරීම වටී." අනුරූප වේ ලිපියක් Habr මත.

ඇත්ත වශයෙන්ම, බොහෝ ගැටලු විසඳීමට පූර්ණ සම්බන්ධතා ආකෘතියක් අවශ්‍ය නොවන බව මිනිසුන්ට වැටහුණි, විශේෂයෙන්, උදාහරණයක් ලෙස, කාර්ය සාධනය තීරණාත්මක වන අතර සමහර සරල විමසුම් එකතු කිරීම ආධිපත්‍යය දරන අයට - ප්‍රමිතික ඉක්මනින් ගණනය කර ඒවා ලිවීම ඉතා වැදගත් වේ. දත්ත සමුදාය, සහ බොහෝ විශේෂාංග සාපේක්ෂ ඒවා අනවශ්‍ය පමණක් නොව හානිකර ද බවට පත් විය - එය අපට වඩාත්ම වැදගත් දෙය (යම් නිශ්චිත කාර්යයක් සඳහා) නරක් කරන්නේ නම් යමක් සාමාන්‍යකරණය කරන්නේ ඇයි - ඵලදායිතාව?

එසේම, සම්භාව්‍ය සම්බන්ධතා ආකෘතියේ ස්ථාවර ගණිතමය යෝජනා ක්‍රම වෙනුවට නම්‍යශීලී ක්‍රම බොහෝ විට අවශ්‍ය වේ - තවද මෙය පද්ධතිය යෙදවීම සහ ඉක්මනින් ක්‍රියා කිරීම ආරම්භ කිරීම, ප්‍රතිඵල සැකසීම - හෝ ස්කීමා සහ ගබඩා කර ඇති දත්ත වර්ග කිරීම ඉතා වැදගත් වන විට යෙදුම් සංවර්ධනය ඇදහිය නොහැකි ලෙස සරල කරයි. එතරම් වැදගත් නොවේ.

උදාහරණයක් ලෙස, අපි විශේෂඥ පද්ධතියක් නිර්මාණය කරන අතර සමහර මෙටා තොරතුරු සමඟ නිශ්චිත වසමක තොරතුරු ගබඩා කිරීමට අවශ්‍යයි - අපි සියලු ක්ෂේත්‍ර නොදන්නා අතර සෑම වාර්තාවක් සඳහාම JSON ගබඩා කරන්නෙමු - මෙය අපට දත්ත පුළුල් කිරීම සඳහා ඉතා නම්‍යශීලී පරිසරයක් ලබා දෙයි. ආකෘතිය සහ ඉක්මනින් පුනරාවර්තනය වේ - එබැවින් මෙම අවස්ථාවෙහිදී, NoSQL වඩාත් සුදුසු සහ වඩාත් කියවිය හැකි වනු ඇත. උදාහරණ ඇතුළත් කිරීම (මගේ එක් ව්‍යාපෘතියකින් NoSQL අවශ්‍ය වූ තැනම තිබුනා).

{"en_wikipedia_url":"https://en.wikipedia.org/wiki/Johnny_Cash",
"ru_wikipedia_url":"https://ru.wikipedia.org/wiki/?curid=301643",
"ru_wiki_pagecount":149616,
"entity":[42775,"Джонни Кэш","ru"],
"en_wiki_pagecount":2338861}

වැඩි විස්තර කියවිය හැක මෙහි NoSQL ගැන.

පාඩම් කළ යුත්තේ කුමක්ද?

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

Scripting Query Languages

මුලදී, පොදුවේ පයිතන් එයට සම්බන්ධ වන්නේ කුමක්දැයි පෙනේ - එය ක්‍රමලේඛන භාෂාවක් මිස විමසීම් ගැන නොවේ.

දත්ත විද්‍යාඥයාගේ සටහන්: දත්ත විමසුම් භාෂා පිළිබඳ පුද්ගලීකරණය කළ සමාලෝචනයක්

  • Pandas යනු දත්ත විද්‍යාවේ ස්විට්සර්ලන්ත හමුදා පිහියකි; දත්ත පරිවර්තනය, එකතු කිරීම යනාදිය විශාල ප්‍රමාණයක් එහි සිදු වේ.
  • Numpy - දෛශික ගණනය කිරීම්, matrices සහ රේඛීය වීජ ගණිතය එහි.
  • Scipy - මෙම පැකේජයේ ගණිතය ගොඩක් තිබේ, විශේෂයෙන් සංඛ්යාලේඛන.
  • Jupyter lab - ගවේෂණාත්මක දත්ත විශ්ලේෂණය ගොඩක් ලැප්ටොප් වලට හොඳින් ගැලපේ - දැන ගැනීමට ප්රයෝජනවත් වේ.
  • ඉල්ලීම් - ජාලය සමඟ වැඩ කිරීම.
  • Pyspark දත්ත ඉංජිනේරුවන් අතර ඉතා ජනප්‍රියයි, බොහෝ විට ඔබට මෙය හෝ Spark සමඟ අන්තර් ක්‍රියා කිරීමට සිදුවනු ඇත, ඔවුන්ගේ ජනප්‍රියතාවය නිසා.
  • *Selenium - අඩවි සහ සම්පත් වලින් දත්ත එකතු කිරීම සඳහා ඉතා ප්රයෝජනවත් වේ, සමහර විට දත්ත ලබා ගැනීමට වෙනත් ක්රමයක් නොමැත.

මගේ ප්‍රධාන උපදෙස: පයිතන් ඉගෙන ගන්න!

පාණ්ඩස්

අපි පහත කේතය උදාහරණයක් ලෙස ගනිමු:

import pandas as pd
df = pd.read_csv(“data/dataset.csv”)
# Calculate and rename aggregations
all_together = (df[df[‘trip_type’] == “return”]
    .groupby(['start_station_name','end_station_name'])
                  	    .agg({'trip_duration_seconds': [np.size, np.mean, np.min, np.max]})
                           .rename(columns={'size': 'num_trips', 
           'mean': 'avg_duration_seconds',    
           'amin': min_duration_seconds', 
           ‘amax': 'max_duration_seconds'}))

මූලික වශයෙන්, කේතය සම්භාව්‍ය SQL රටාවට ගැලපෙන බව අපට පෙනේ.

SELECT start_station_name, end_station_name, count(trip_duration_seconds) as size, …..
FROM dataset
WHERE trip_type = ‘return’
GROUPBY start_station_name, end_station_name

නමුත් වැදගත් කොටස නම් මෙම කේතය ස්ක්‍රිප්ට් සහ නල මාර්ගයේ කොටසක් වීමයි; ඇත්ත වශයෙන්ම අපි පයිතන් නල මාර්ගයට විමසුම් කාවැද්දුවෙමු. මෙම තත්වය තුළ, විමසුම් භාෂාව අප වෙත පැමිණෙන්නේ Pandas හෝ pySpark වැනි පුස්තකාල වලින්.

සාමාන්‍යයෙන්, pySpark හි අපි විමසුම් භාෂාවක් හරහා සමාන ආකාරයේ දත්ත පරිවර්තනයක් දකිමු:

df.filter(df.trip_type = “return”)
  .groupby(“day”)
  .agg({duration: 'mean'})
  .sort()

කොහෙද සහ කුමක් කියවිය යුතුද

පොදුවේ Python මතම ප්‍රශ්නයක් නැහැ අධ්යයනය කිරීමට ද්රව්ය සොයා ගන්න. අන්තර්ජාලයේ නිබන්ධන විශාල ප්‍රමාණයක් ඇත පැන්ඩා, pySpark සහ පාඨමාලා ස්පාක් (සහ තනිවම DS) සමස්තයක් වශයෙන්, මෙහි අන්තර්ගතය ගූගල් කිරීම සඳහා විශිෂ්ටයි, සහ මට අවධානය යොමු කිරීමට එක් පැකේජයක් තෝරා ගැනීමට සිදුවුවහොත්, එය පැන්ඩා වනු ඇත. DS+Python ද්‍රව්‍යවල සංයෝජනය සම්බන්ධයෙන්ද ගොඩක්.

විමසුම් භාෂාවක් ලෙස Shell

මා සමඟ වැඩ කර ඇති දත්ත සැකසුම් සහ විශ්ලේෂණ ව්‍යාපෘති කිහිපයක්, ඇත්ත වශයෙන්ම, පයිතන්, ජාවා සහ ෂෙල් විධානයන් හි කේතයන් කැඳවන ෂෙල් ස්ක්‍රිප්ට් වේ. එමනිසා, සාමාන්‍යයෙන්, ඔබට bash/zsh/etc හි ඇති නල මාර්ග යම් ආකාරයක ඉහළ මට්ටමේ විමසුමක් ලෙස සැලකිය හැකිය (ඇත්ත වශයෙන්ම, ඔබට එහි ලූපයන් පිරවිය හැකිය, නමුත් මෙය shell භාෂාවල DS කේතය සඳහා සාමාන්‍ය නොවේ), අපි ලබා දෙමු. සරල උදාහරණයක් - මට wikidata හි QID සිතියම්ගත කිරීමක් සහ රුසියානු සහ ඉංග්‍රීසි විකි වෙත සම්පූර්ණ සබැඳි කිරීමට අවශ්‍ය විය, මේ සඳහා මම bash හි ඇති විධාන වලින් සරල ඉල්ලීමක් ලිවූ අතර ප්‍රතිදානය සඳහා මම Python හි සරල පිටපතක් ලිව්වෙමි. මේ ආකාරයට එකතු කරන්න:

pv “data/latest-all.json.gz” | 
unpigz -c  | 
jq --stream $JQ_QUERY | 
python3 scripts/post_process.py "output.csv"

එහිදී

JQ_QUERY = 'select((.[0][1] == "sitelinks" and (.[0][2]=="enwiki" or .[0][2] =="ruwiki") and .[0][3] =="title") or .[0][1] == "id")' 

මෙය ඇත්ත වශයෙන්ම, අවශ්‍ය සිතියම්කරණය නිර්මාණය කළ සම්පූර්ණ නල මාර්ගයයි; අප දකින පරිදි, සියල්ල ප්‍රවාහ මාදිලියේ ක්‍රියාත්මක විය:

  • pv filepath - ගොනු ප්‍රමාණය මත පදනම්ව ප්‍රගති තීරුවක් ලබා දෙන අතර එහි අන්තර්ගතය ඉදිරියට ගෙන යයි
  • unpigz -c ලේඛනාගාරයේ කොටසක් කියවා jq වෙත ලබා දුන්නේය
  • jq යතුර සමඟින් - ප්‍රවාහය වහාම ප්‍රතිඵලය නිපදවා එය පයිතන් හි (පළමු උදාහරණය හා සමාන) පසු සකසනය වෙත ලබා දුන්නේය.
  • අභ්‍යන්තරව, postprocessor යනු ප්‍රතිදානය සංයුති කරන සරල රාජ්‍ය යන්ත්‍රයක් විය 

සමස්තයක් වශයෙන්, සැලකිය යුතු සම්පත් නොමැතිව සහ සරල නල මාර්ගයකින් සහ මෙවලම් කිහිපයකින් සාදන ලද විශාල දත්ත (0.5TB) මත ප්‍රවාහ ආකාරයෙන් ක්‍රියා කරන සංකීර්ණ නල මාර්ගයකි.

තවත් වැදගත් උපදෙසක්: ටර්මිනලයේ හොඳින් හා ඵලදායී ලෙස වැඩ කිරීමට සහ bash/zsh/etc ලිවීමට හැකි වීම.

එය ප්රයෝජනවත් වනු ඇත්තේ කොහේද? ඔව්, සෑම තැනකම පාහේ - නැවතත්, අන්තර්ජාලයේ අධ්‍යයනය කිරීමට බොහෝ ද්‍රව්‍ය තිබේ. විශේෂයෙන්, මෙහි මේ මගේ පෙර ලිපිය.

ආර් ස්ක්‍රිප්ටින්

නැවතත්, පාඨකයා කෑ ගැසිය හැකිය - හොඳයි, මෙය සම්පූර්ණ ක්‍රමලේඛන භාෂාවකි! ඇත්ත වශයෙන්ම, ඔහු නිවැරදි වනු ඇත. කෙසේ වෙතත්, මට සාමාන්‍යයෙන් R මුණගැසුණේ එවැනි සන්දර්භයක් තුළ, ඇත්ත වශයෙන්ම, එය විමසුම් භාෂාවකට බෙහෙවින් සමාන ය.

R යනු ස්ථිතික පරිගණකකරණය සහ දෘශ්‍යකරණය සඳහා සංඛ්‍යානමය පරිගණක පරිසරයක් සහ භාෂාවකි (අනුව මේක).

දත්ත විද්‍යාඥයාගේ සටහන්: දත්ත විමසුම් භාෂා පිළිබඳ පුද්ගලීකරණය කළ සමාලෝචනයක්
ගත්තා මෙතනින්. මාර්ගය වන විට, මම එය නිර්දේශ කරමි, හොඳ ද්රව්ය.

දත්ත විද්‍යාඥයකු R දැනගත යුතු වන්නේ ඇයි? අවම වශයෙන්, R හි දත්ත විශ්ලේෂණය කරන තොරතුරු තාක්ෂණ නොවන පුද්ගලයින් විශාල ස්ථරයක් සිටින නිසා. මට එය පහත ස්ථානවල හමු විය:

  • ඖෂධ අංශය.
  • ජීව විද්යාඥයන්.
  • මූල්ය අංශය.
  • සංඛ්‍යාලේඛන සමඟ කටයුතු කරන තනිකරම ගණිතමය අධ්‍යාපනයක් ඇති පුද්ගලයින්.
  • විශේෂිත සංඛ්‍යාන ආකෘති සහ යන්ත්‍ර ඉගෙනුම් ආකෘති (බොහෝ විට R පැකේජයක් ලෙස කර්තෘගේ අනුවාදයෙන් පමණක් සොයා ගත හැක).

එය ඇත්තටම විමසුම් භාෂාවක් වන්නේ ඇයි? එය බොහෝ විට දක්නට ලැබෙන ආකාරයෙන්, එය ඇත්ත වශයෙන්ම දත්ත කියවීම සහ විමසුම් (ආකෘතිය) පරාමිතීන් සවි කිරීම, මෙන්ම ggplot2 වැනි පැකේජවල දත්ත දෘශ්‍යමාන කිරීම ඇතුළුව ආකෘතියක් සෑදීමට ඉල්ලීමකි - මෙයද විමසුම් ලිවීමේ ආකාරයකි. .

දෘශ්‍යකරණය සඳහා උදාහරණ විමසුම්

ggplot(data = beav, 
       aes(x = id, y = temp, 
           group = activ, color = activ)) +
  geom_line() + 
  geom_point() +
  scale_color_manual(values = c("red", "blue"))

සාමාන්‍යයෙන්, R වෙතින් බොහෝ අදහස් දත්ත රාමු සහ දත්ත දෛශිකකරණය වැනි pandas, numpy හෝ scipy වැනි python පැකේජ වෙත සංක්‍රමණය වී ඇත - එබැවින් සාමාන්‍යයෙන් R හි බොහෝ දේවල් ඔබට හුරුපුරුදු සහ පහසු ලෙස පෙනෙනු ඇත.

අධ්‍යයනය කිරීමට බොහෝ මූලාශ්‍ර තිබේ, උදාහරණයක් ලෙස, මේ.

දැනුම ප්රස්ථාර

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

සම්භාව්‍ය සම්බන්ධතා දත්ත සමුදායන් තුළ අපට ස්ථාවර ක්‍රම සටහනක් ඇත, නමුත් මෙහි යෝජනා ක්‍රමය නම්‍යශීලී වේ, සෑම පුරෝකථනයක්ම ඇත්ත වශයෙන්ම “තීරුවක්” සහ ඊටත් වඩා වැඩි ය.

ඔබ පුද්ගලයෙකු ආදර්ශයට ගනිමින් ප්‍රධාන දේවල් විස්තර කිරීමට අවශ්‍ය බව සිතන්න, උදාහරණයක් ලෙස, අපි නිශ්චිත පුද්ගලයෙකු වන ඩග්ලස් ඇඩම්ස් ගෙන මෙම විස්තරය පදනමක් ලෙස භාවිතා කරමු.

දත්ත විද්‍යාඥයාගේ සටහන්: දත්ත විමසුම් භාෂා පිළිබඳ පුද්ගලීකරණය කළ සමාලෝචනයක්
www.wikidata.org/wiki/Q42

අපි සම්බන්ධිත දත්ත සමුදායක් භාවිතා කළේ නම්, අපට විශාල තීරු විශාල සංඛ්‍යාවක් සහිත විශාල වගුවක් හෝ වගු නිර්මාණය කිරීමට සිදුවනු ඇත, ඒවායින් බොහොමයක් NULL හෝ කිසියම් පෙරනිමි ව්‍යාජ අගයකින් පුරවනු ඇත, උදාහරණයක් ලෙස, අපගෙන් බොහෝ දෙනෙකුට තිබේ යැයි සිතිය නොහැක. කොරියානු ජාතික පුස්තකාලයට ඇතුල් වීම - ඇත්ත වශයෙන්ම, අපට ඒවා වෙනම වගු වල තැබිය හැකිය, නමුත් මෙය අවසානයේ ස්ථාවර සම්බන්ධකයක් භාවිතා කරමින් පුරෝකථනයන් සහිත නම්‍යශීලී තාර්කික පරිපථයක් ආදර්ශයට ගැනීමේ උත්සාහයක් වනු ඇත.

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

ඔබට මෙය හමුවිය හැක්කේ කොතැනින්ද? පළමුව, සමඟ වැඩ කරන්න දත්ත විකි, සහ ඕනෑම ප්‍රස්ථාර දත්ත සමුදායන් හෝ සම්බන්ධිත දත්ත සමඟ.

පහත දැක්වෙන්නේ මා භාවිතා කළ සහ වැඩ කළ ප්‍රධාන විමසුම් භාෂා වේ.

SPARQL

විකී:
SPARQL (පුනරාවර්තන කෙටි යෙදුම от ඉංජිනේරු. SPARQL ප්‍රොටෝකෝලය සහ RDF විමසුම් භාෂාව) - දත්ත විමසුම් භාෂාව, ආකෘතියෙන් නියෝජනය වේ RDF, මෙන්ම ප්රොටෝකෝලය මෙම ඉල්ලීම් සම්ප්‍රේෂණය කිරීමට සහ ඒවාට ප්‍රතිචාර දැක්වීමට. SPARQL යනු නිර්දේශයකි W3C Consortium සහ තාක්ෂණයෙන් එකක් අර්ථකථන වෙබ්.

නමුත් ඇත්ත වශයෙන්ම එය තාර්කික ඒකීය සහ ද්විමය පුරෝකථන සඳහා විමසුම් භාෂාවකි. ඔබ හුදෙක් බූලියන් ප්‍රකාශනයක සවි කර ඇති දේ සහ නැති දේ (ඉතා සරල කළ) කොන්දේසි සහිතව සඳහන් කරයි.

SPARQL විමසුම් ක්‍රියාත්මක කරන RDF (සම්පත් විස්තර රාමුව) පදනම ත්‍රිත්ව වේ. object, predicate, subject - සහ විමසුම ආත්මයේ නිශ්චිත සීමාවන්ට අනුව අවශ්‍ය ත්‍රිත්ව තෝරා ගනී: p_55(X, q_33) සත්‍ය වන X එකක් සොයා ගන්න - එහිදී, ඇත්ත වශයෙන්ම, p_55 යනු ID 55 සමඟ යම් ආකාරයක සම්බන්ධයක් වන අතර q_33 යනු a ID 33 සහිත වස්තුව (මෙහි සහ සම්පූර්ණ කතාව, නැවතත් සියලු ආකාරයේ විස්තර මඟ හරිමින්).

දත්ත ඉදිරිපත් කිරීමේ උදාහරණය:

දත්ත විද්‍යාඥයාගේ සටහන්: දත්ත විමසුම් භාෂා පිළිබඳ පුද්ගලීකරණය කළ සමාලෝචනයක්
මෙහි රටවල් සමඟ පින්තූර සහ උදාහරණ මෙතනින්.

මූලික විමසුම් උදාහරණය

දත්ත විද්‍යාඥයාගේ සටහන්: දත්ත විමසුම් භාෂා පිළිබඳ පුද්ගලීකරණය කළ සමාලෝචනයක්

ඇත්ත වශයෙන්ම, අපට පුරෝකථනය සඳහා ?රටේ විචල්‍යයේ අගය සෙවීමට අවශ්‍යය
member_of, member_of(?country,q458) සහ q458 යුරෝපා සංගමයේ ID බව සත්‍යයකි.

පයිතන් එන්ජිම තුළ සැබෑ SPARQL විමසුමක උදාහරණයක්:

දත්ත විද්‍යාඥයාගේ සටහන්: දත්ත විමසුම් භාෂා පිළිබඳ පුද්ගලීකරණය කළ සමාලෝචනයක්

සාමාන්‍යයෙන්, මට එය ලිවීමට වඩා SPARQL කියවීමට සිදු වී ඇත - එම තත්ත්වය තුළ, දත්ත ලබා ගන්නා ආකාරය නිවැරදිව තේරුම් ගැනීමට අවම වශයෙන් මූලික මට්ටමකින් භාෂාව තේරුම් ගැනීම ප්‍රයෝජනවත් කුසලතාවක් වනු ඇත. 

සබැඳිව අධ්‍යයනය කිරීමට බොහෝ ද්‍රව්‍ය තිබේ: උදාහරණයක් ලෙස, මෙහි මේ и මේ. මම සාමාන්‍යයෙන් ගූගල් විශේෂිත මෝස්තර සහ උදාහරණ සහ දැනට එය ප්‍රමාණවත්.

තාර්කික විමසුම් භාෂා

මගේ ලිපියෙන් ඔබට මාතෘකාව පිළිබඳ වැඩිදුර කියවිය හැකිය මෙහි. මෙහිදී, විමසුම් ලිවීම සඳහා තාර්කික භාෂා හොඳින් ගැලපෙන්නේ මන්දැයි අපි කෙටියෙන් විමසා බලමු. මූලික වශයෙන්, RDF යනු p(X) සහ h(X,Y) ආකෘති පත්‍රයේ තාර්කික ප්‍රකාශ සමූහයක් පමණක් වන අතර තාර්කික විමසුමකට පහත පෝරමය ඇත:

output(X) :- country(X), member_of(X,“EU”).

මෙහිදී අපි නව පුරෝකථන නිමැවුමක් නිර්මාණය කිරීම ගැන කතා කරමු/1 (/1 යනු unary), X සඳහා රට(X) - එනම් X යනු රටක් වන අතර සාමාජික_of(X,"EU ") වේ.

එනම්, මෙම අවස්ථාවෙහිදී, දත්ත සහ රීති යන දෙකම එකම ආකාරයකින් ඉදිරිපත් කර ඇති අතර එමඟින් ගැටළු ඉතා පහසුවෙන් සහ හොඳින් ආකෘතිගත කිරීමට හැකි වේ.

ක්ෂේත්‍රය තුළ ඔබ හමුවූයේ කොතැනින්ද?: එවැනි භාෂාවකින් විමසුම් ලියන සමාගමක් සමඟ සම්පූර්ණ විශාල ව්‍යාපෘතියක් මෙන්ම පද්ධතියේ හරයේ වත්මන් ව්‍යාපෘතිය - මෙය තරමක් විදේශීය දෙයක් බව පෙනේ, නමුත් සමහර විට එය සිදු වේ.

තාර්කික භාෂා සැකසුම් විකිදත්තක කේත කොටසක උදාහරණයක්:

දත්ත විද්‍යාඥයාගේ සටහන්: දත්ත විමසුම් භාෂා පිළිබඳ පුද්ගලීකරණය කළ සමාලෝචනයක්

ද්‍රව්‍ය: මම මෙහි නවීන තාර්කික ක්‍රමලේඛන භාෂාවට සබැඳි කිහිපයක් දෙන්නම් පිළිතුරු කට්ටල ක්‍රමලේඛනය - එය අධ්‍යයනය කිරීමට මම නිර්දේශ කරමි:

දත්ත විද්‍යාඥයාගේ සටහන්: දත්ත විමසුම් භාෂා පිළිබඳ පුද්ගලීකරණය කළ සමාලෝචනයක්

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

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