Kedu ihe nwere ike ịgahie na Science Data? Nchịkọta data

Kedu ihe nwere ike ịgahie na Science Data? Nchịkọta data
Taa enwere 100500 Data Science ọmụmụ na ọ dịwo anya mara na ọtụtụ ego na Data Science nwere ike nweta site na Data Science ọmụmụ ( gịnị kpatara igwu mgbe ị nwere ike ire shọvel?). Ihe ọghọm dị na nkuzi ndị a bụ na ha enweghị ihe jikọrọ ya na ezigbo ọrụ: ọ nweghị onye ga-enye gị data dị ọcha, edoziri na usoro achọrọ. Na mgbe ị hapụrụ usoro ahụ wee malite idozi ezigbo nsogbu, ọtụtụ nuances na-apụta.

Ya mere, anyị na-amalite usoro nke ndetu "Gịnị nwere ike ịga na-ezighị ezi na Data Science", dabere na ezigbo ihe mere m, m comrades na ndị ọrụ ibe. Anyị ga-enyocha ọrụ sayensị data na-ahụkarị site na iji ezigbo atụ: otu nke a si eme n'ezie. Ka anyị jiri ọrụ nnakọta data malite taa.

Na ihe mbụ ndị mmadụ na-asụ ngọngọ mgbe ha malitere ịrụ ọrụ na ezigbo data bụ n'ezie ịnakọta data a kachasị dị anyị mkpa. Isi ozi nke edemede a:

Anyị na-elelị oge, akụrụngwa, na mbọ achọrọ iji nakọta, hichaa na kwado data.

Na nke kachasị mkpa, anyị ga-atụle ihe anyị ga-eme iji gbochie nke a.

Dị ka atụmatụ dị iche iche si dị, ihicha, mgbanwe, data nhazi, atụmatụ engineering, wdg were 80-90% nke oge, na analysis 10-20%, mgbe fọrọ nke nta niile mmụta ihe na-elekwasị anya nanị na analysis.

Ka anyị lelee nsogbu nyocha dị mfe na nsụgharị atọ dị ka ihe atụ ma hụ ihe “ọnọdụ ndị na-akawanye njọ” bụ.

Ma dịka ọmụmaatụ, ọzọ, anyị ga-atụle ụdị mgbanwe dị iche iche nke ọrụ ịnakọta data na iji obodo atụnyere:

  1. Reddit abụọ subreddit
  2. Akụkụ abụọ nke Habr
  3. Otu abụọ nke Odnoklassniki

Usoro ọnọdụ na tiori

Mepee saịtị ahụ ma gụọ ihe atụ, ma ọ bụrụ na o doro anya, wepụta awa ole na ole maka ịgụ akwụkwọ, awa ole na ole maka koodu site na iji ihe atụ na nbipu. Tinye awa ole na ole maka nchịkọta. Tụba n'ime awa ole na ole n'edobere (jiri abụọ ma tinye awa N).

Isi ihe: Atụmatụ oge dabere n'echiche na ịkọ nkọ banyere ogologo oge ọ ga-ewe.

Ọ dị mkpa ịmalite nyocha oge site n'ịtụle paramita ndị a maka nsogbu ọnọdụ akọwara n'elu:

  • Kedu nha data ahụ na ole n'ime ya kwesịrị ịnakọta anụ ahụ (*lee n'okpuru).
  • Kedu oge nchịkọta maka otu ndekọ na ogologo oge ka ị ga-echere tupu ị nweta nke abụọ?
  • Tụlee koodu ederede nke na-echekwa steeti wee malite ịmalitegharị mgbe (ọ bụghị ma ọ bụrụ) ihe niile dara.
  • Chọpụta ma anyị chọrọ ikike ma wepụta oge iji nweta ohere site na API.
  • Tọọ nọmba nke njehie dị ka ọrụ nke mgbagwoju anya data - nyochaa maka otu ọrụ: nhazi, mgbanwe ole, ihe na otu esi ewepụ.
  • Dozie mperi netwọkụ yana nsogbu na omume ọrụ na-abụghị ọkọlọtọ.
  • Nyochaa ma ọ bụrụ na ọrụ achọrọ dị na akwụkwọ ahụ ma ọ bụrụ na ọ bụghị, mgbe ahụ, ole na ole achọrọ maka nhazi ọrụ.

Ihe kachasị mkpa bụ na iji tụọ oge - ị ga-etinye oge na mgbalị na "nyocha na ike" - naanị mgbe ahụ ka atụmatụ gị ga-ezuru oke. Ya mere, n'agbanyeghị otú a na-akpali gị ịsị "ogologo oge ọ na-ewe iji nakọta data" - zụta onwe gị oge maka nyocha nke mbụ ma na-arụ ụka site na oge ole ga-adịgasị iche dabere n'ezie paramita nke nsogbu ahụ.

Ma ugbu a, anyị ga-egosipụta kpọmkwem ihe atụ ebe ndị dị otú ahụ parameters ga-agbanwe.

Isi ihe: Atụmatụ ahụ dabere na nyocha nke isi ihe na-emetụta oke na mgbagwoju anya nke ọrụ ahụ.

Ntụle dabere na ntule bụ ụzọ dị mma mgbe ihe ndị na-arụ ọrụ dị obere ma ọ nweghị ọtụtụ ihe nwere ike imetụta nhazi nke nsogbu ahụ nke ukwuu. Mana n'ihe banyere ọtụtụ nsogbu sayensị data, ihe ndị dị otú ahụ na-aba ụba nke ukwuu na ụzọ dị otú ahụ na-aghọ ezughị ezu.

Ntụnyere obodo Reddit

Ka anyị malite na ikpe kachasị mfe (dị ka ọ na-apụta mgbe e mesịrị). N'ozuzu, n'ikwu eziokwu, anyị nwere ihe fọrọ nke nta ka ọ bụrụ ezigbo ikpe, ka anyị lelee ndepụta nyocha nke mgbagwoju anya anyị:

  • Enwere API dị mma, doro anya na nke edekọtara.
  • Ọ dị oke mfe na nke kachasị mkpa, a na-enweta akara ngosi na-akpaghị aka.
  • E nwere ihe mkpuchi python - na ọtụtụ ihe atụ.
  • Obodo na-enyocha ma na-anakọta data na reddit (ọbụlagodi na vidiyo YouTube na-akọwa otu esi eji ihe mkpuchi python) Ọmụmaatụ.
  • Ụzọ ndị anyị chọrọ nwere ike ịdị na API. Ọzọkwa, koodu ahụ na-ele anya kọmpat ma dị ọcha, n'okpuru ebe a bụ ihe atụ nke ọrụ na-anakọta nkwupụta na post.

def get_comments(submission_id):
    reddit = Reddit(check_for_updates=False, user_agent=AGENT)
    submission = reddit.submission(id=submission_id)
    more_comments = submission.comments.replace_more()
    if more_comments:
        skipped_comments = sum(x.count for x in more_comments)
        logger.debug('Skipped %d MoreComments (%d comments)',
                     len(more_comments), skipped_comments)
    return submission.comments.list()

E sitere na nke a nhọrọ nke ngwa ọrụ dị mma maka mkpuchi.

N'agbanyeghị eziokwu na nke a bụ ikpe kachasị mma, ọ ka bara uru iburu n'uche ọtụtụ ihe dị mkpa sitere na ndụ n'ezie:

  • Oke API - A na-amanye anyị iwere data na batches (ụra n'etiti arịrịọ, wdg).
  • Oge nchịkọta - maka nyocha na ntụnyere zuru oke, ị ga-ewepụta oge dị ịrịba ama maka ududo ije site na subreddit.
  • Bot ahụ ga-agba ọsọ na ihe nkesa-ịnweghị ike ịme ya na laptọọpụ gị, tinye ya n'akpa gị, ma na-azụ ahịa gị. Ya mere, m na-agba ọsọ ihe niile na VPS. Iji koodu nkwado habrahabr10 ị nwere ike chekwaa 10% ọzọ nke ọnụ ahịa.
  • Enweghi ike ịnweta nke ụfọdụ data (ha na-ahụ anya ndị nchịkwa ma ọ bụ na-esiri ike ịnakọta) - nke a ga-eburu n'uche; na ụkpụrụ, ọ bụghị data niile nwere ike ịnakọta oge zuru oke.
  • Njehie netwọkụ: ịkparịta ụka n'Ịntanet bụ ihe mgbu.
  • Nke a bụ data dị ndụ - ọ dịghị mgbe ọ dị ọcha.

N'ezie, ọ dị mkpa ịgụnye nuances ndị a na mmepe. Specific awa / ụbọchị dabere na mmepe ahụmahụ ma ọ bụ ahụmahụ na-arụ ọrụ na-arụ ọrụ ndị yiri ya, Otú ọ dị, anyị na-ahụ na ebe a ọrụ bụ nnọọ engineering na ọ dịghị achọ ọzọ ahu mmegharị iji dozie - ihe niile nwere ike nke ọma enyocha, ndokwa na ime.

Ntụnyere akụkụ Habr

Ka anyị gaa n'ihu n'okwu na-adọrọ mmasị karị na nke na-adịghị adị mkpa nke atụnyere eri na/ma ọ bụ akụkụ nke Habr.

Ka anyị lelee ndepụta nyocha nke mgbagwoju anya anyị - ebe a, iji ghọta isi ihe ọ bụla, ị ga-egwupụta ntakịrị n'ime ọrụ ahụ n'onwe ya wee nwalee.

  • Na mbụ ị chere na enwere API, mana ọ nweghị. Ee, ee, Habr nwere API, mana ọ naghị enweta ndị ọrụ (ma ọ bụ ikekwe ọ naghị arụ ọrụ ma ọlị).
  • Mgbe ahụ ị ga-amalite ịtụgharị html - "mbubata arịrịọ", kedu ihe nwere ike ịgahie?
  • Kedu ka esi atụgharị agbanyeghị? Ụzọ kachasị mfe na nke a na-ejikarị eme ihe bụ ịkọgharị n'elu ID, mara na ọ bụghị nke kachasị mma na ọ ga-edozi okwu dị iche iche - nke a bụ ihe atụ nke njupụta nke ezigbo ID n'etiti ndị niile dị adị.

    Kedu ihe nwere ike ịgahie na Science Data? Nchịkọta data
    E sitere na nke a edemede.

  • Data raw nke ejiri HTML mee n'elu webụ bụ ihe mgbu. Dịka ọmụmaatụ, ịchọrọ ịnakọta ma chekwaa ọkwa nke akụkọ: ị dọkapụrụ akara ahụ na html wee kpebie ịchekwa ya dị ka nọmba maka nhazi ọzọ: 

    1) int (akara) na-atụfu njehie: ebe ọ bụ na na Habré enwere mwepu, dịka ọmụmaatụ, n'ahịrị "-5" - nke a bụ en dash, ọ bụghị akara mwepu (na-atụghị anya ya, nri?), Ya mere na ụfọdụ mgbe m ga-ebuli parser na ndụ na dị otú ahụ a egwu fix.

    try:
          score_txt = post.find(class_="score").text.replace(u"–","-").replace(u"+","+")
          score = int(score_txt)
          if check_date(date):
            post_score += score
    

    Enwere ike ọ nweghị ụbọchị, pluses na minuses ma ọlị (dịka anyị na-ahụ n'elu na ọrụ check_date, nke a mere).

    2) Ihe odide pụrụ iche na-enweghị atụ - ha ga-abịa, ịkwesịrị ịdị njikere.

    3) Ọdịdị na-agbanwe dabere n'ụdị post.

    4) Ederede ochie nwere ike ịnwe usoro dị egwu **.

  • N'ụzọ bụ isi, a ga-edozi njikwa njehie na ihe nwere ike ma ọ bụ na-agaghị eme ma ị nweghị ike ịkọ n'ezie ihe ga-agahiere ụzọ yana otu usoro ahụ nwere ike isi bụrụ na ihe ga-adapụ ebe - naanị ị ga-anwale ma buru n'uche. mmejọ nke onye nzacha na-atụba.
  • Mgbe ahụ ị ga-achọpụta na ịkwesịrị ịkọwapụta n'ọtụtụ eri, ma ọ bụghị ịtụgharị n'otu n'otu ga-ewe awa 30+ (nke a bụ naanị oge ogbugbu nke parser na-arụ ọrụ otu, nke na-ehi ụra na ọ naghị ada n'okpuru mmachibido iwu ọ bụla). N'ime nke a edemede, nke a butere n'oge ụfọdụ na atụmatụ yiri nke ahụ:

Kedu ihe nwere ike ịgahie na Science Data? Nchịkọta data

Nchịkọta ndepụta site na mgbagwoju anya:

  • Na-arụ ọrụ na netwọk na html n'ịkọwapụta na ntughari na ịchọ site na ID.
  • Akwụkwọ nke usoro dị iche iche.
  • Enwere ọtụtụ ebe koodu nwere ike ịda ngwa ngwa.
  • Ọ dị mkpa ide || koodu.
  • Akwụkwọ ndị dị mkpa, ihe atụ koodu, na/ma ọ bụ obodo na-efu.

Oge echere maka ọrụ a ga-adị okpukpu 3-5 karịa maka ịnakọta data sitere na Reddit.

Ntụle nke otu Odnoklassniki

Ka anyị gaa n'ihu n'okwu kacha atọ ụtọ nke akọwara. Maka m, ọ bụ ihe na-atọ ụtọ n'ihi na na nlele mbụ, ọ dị ka ihe na-adịghị mkpa, mana ọ naghị adị otú ahụ ma ọlị - ozugbo ị tụrụ osisi na ya.

Ka anyị malite na ndepụta ihe isi ike anyị wee rịba ama na ọtụtụ n'ime ha ga-esi ike karịa ka ha lere anya na mbụ:

  • Enwere API, mana ọ fọrọ nke nta ka ọ bụrụ enweghị ọrụ ndị dị mkpa.
  • Maka ụfọdụ ọrụ ị ga-arịọ arịrịọ maka ịnweta site na mail, ya bụ, inye ohere ọ bụghị ozugbo.
  • A na-edekọ ya nke ọma (iji malite, okwu Russian na Bekee na-agwakọta ya n'ebe nile, na kpamkpam na-ekwekọghị ekwekọ - mgbe ụfọdụ, ị ga-achọ ịma ihe ha chọrọ n'aka gị ebe) na, Ọzọkwa, imewe adịghị mma maka ịnweta data, dịka ọmụmaatụ. , ọrụ anyị chọrọ.
  • Achọrọ nnọkọ n'ime akwụkwọ ahụ, mana ọ naghị eji ya eme ihe n'ezie - ọ nweghịkwa ụzọ isi ghọta mgbagwoju anya niile nke ụdị API karịa ịgagharị na ịtụ anya na ihe ga-arụ ọrụ.
  • Enweghị ọmụmaatụ na enweghị obodo; naanị ebe nkwado na ịnakọta ozi bụ obere wrapper na Python (na-enweghị ọtụtụ ihe atụ nke ojiji).
  • Selenium yiri ka ọ bụ nhọrọ kachasị arụ ọrụ, ebe ọ bụ na a na-ekpochi ọtụtụ data dị mkpa.
    1) Ya bụ, ikike na-ewere ọnọdụ site n'aka onye ọrụ efu (na ndebanye aha site n'aka).

    2) Otú ọ dị, na Selenium enweghị nkwa maka ọrụ ziri ezi na nke a na-emegharị (ma ọ dịkarịa ala na ok.ru n'ezie).

    3) Weebụsaịtị Ok.ru nwere njehie Javascript na mgbe ụfọdụ ọ na-akpa àgwà dị iche iche na enweghị nkwekọrịta.

    4) Ị kwesịrị ime pagination, loading ọcha, wdg ...

    5) A ga-edozi njehie API nke ihe mkpuchi ahụ na-enye ga-edozi nke ọma, dịka ọmụmaatụ, dị ka nke a (otu koodu nnwale):

    def get_comments(args, context, discussions):
        pause = 1
        if args.extract_comments:
            all_comments = set()
    #makes sense to keep track of already processed discussions
            for discussion in tqdm(discussions): 
                try:
                    comments = get_comments_from_discussion_via_api(context, discussion)
                except odnoklassniki.api.OdnoklassnikiError as e:
                    if "NOT_FOUND" in str(e):
                        comments = set()
                    else:
                        print(e)
                        bp()
                        pass
                all_comments |= comments
                time.sleep(pause)
            return all_comments
    

    Ihe kacha amasị m bụ:

    OdnoklassnikiError("Error(code: 'None', description: 'HTTP error', method: 'discussions.getComments', params: …)”)

    6) N'ikpeazụ, Selenium + API dị ka nhọrọ kachasị mma.

  • Ọ dị mkpa iji chekwaa steeti ma malitegharịa usoro ahụ, na-ejikwa ọtụtụ njehie, gụnyere omume na-ekwekọghị ekwekọ nke saịtị ahụ - na njehie ndị a siri ike iche n'echiche (ọ gwụla ma ị na-ede akwụkwọ nyocha nke ọma, n'ezie).

Atụmatụ oge ọnọdụ maka ọrụ a ga-adị 3-5 ugboro karịa maka ịnakọta data sitere na Habr. N'agbanyeghị eziokwu na n'ihe banyere Habr anyị na-eji ụzọ ihu ihu na HTML parsing, na n'ihe banyere OK anyị nwere ike ịrụ ọrụ na API na ebe dị egwu.

Nchoputa

N'agbanyeghị ego ole achọrọ ka ị nyochaa oge njedebe "na ntụpọ" (anyị na-eme atụmatụ taa!) nke modul nhazi pipeline data, oge igbu oge ọ fọrọ nke nta ka ọ bụrụ na ọ ga-ekwe omume ịtụle ọbụna qualitatively na-enweghị nyochaa usoro ọrụ.

N'ihe dị ntakịrị karịa nkà ihe ọmụma, agile atụmatụ atụmatụ na-arụ ọrụ nke ọma maka ọrụ injinia, ma nsogbu ndị ọzọ na-anwale na, n'echiche, "okike" na exploratory, ya bụ, obere amụma, nwere ihe isi ike, dị ka ihe atụ nke isiokwu ndị yiri ya. nke anyị tụlere ebe a.

N'ezie, nchịkọta data bụ naanị ihe atụ bụ isi - ọ na-abụkarị ọrụ dị mfe na teknụzụ enweghị mgbagwoju anya, ekwensu na-abụkarịkwa nkọwa. Ma ọ bụ kpọmkwem na ọrụ a ka anyị nwere ike igosi nhọrọ niile nke nhọrọ maka ihe nwere ike ịga na-ezighị ezi na kpọmkwem ogologo oge ọrụ ahụ nwere ike iwe.

Ọ bụrụ n’ilelee njirimara nke ọrụ ahụ na-enweghị nnwale ndị ọzọ, Reddit na OK yiri nke ahụ: enwere API, ihe mkpuchi python, mana n'eziokwu, ọdịiche dị ukwuu. Na-ekpe ikpe site na paramita ndị a, Habr's pars dị mgbagwoju anya karịa OK - mana n'omume ọ bụ ihe dị iche, nke a bụ kpọmkwem ihe enwere ike ịchọpụta site na ịme nnwale dị mfe iji nyochaa paramita nke nsogbu ahụ.

Na m ahụmahụ, kasị dị irè obibia bụ roughly atụmatụ oge ị ga-mkpa maka mmalite analysis n'onwe ya na mfe mbụ nnwale, na-agụ akwụkwọ - ndị a ga-ekwe ka ị na-enye ihe ziri ezi atụmatụ maka dum ọrụ. N'ihe gbasara usoro agile na-ewu ewu, ana m arịọ gị ka ịmepụta tiketi maka "atụmatụ ọrụ ọrụ", na ndabere nke m nwere ike inye nyocha nke ihe a ga-eme n'ime "sprint" ma nye nkọwa ziri ezi maka nke ọ bụla. ọrụ.

Ya mere, arụmụka kachasị dị irè yiri ka ọ bụ nke ga-egosi ọkachamara "na-abụghị nkà na ụzụ" oge na ihe onwunwe ga-adịgasị iche dabere na paramita ndị a na-enyochabeghị.

Kedu ihe nwere ike ịgahie na Science Data? Nchịkọta data

isi: www.habr.com

Tinye a comment