Kuptimi i të dhënave me Panda dhe vizualizimi i tyre me Tableau

Kjo është pjesa e dytë e një serie që analizon faqen Popullore të Mediumit, që mbulon mjetet dhe rezultatet e analizës. Për hapat e mbledhjes së të dhënave dhe të përpunimit paraprak, shikoni "Pjesa 1".

Le të përmbledhim se ku arritëm në Pjesën 1. Për t'i bërë gati të dhënat, ne kemi:

  • U mor me sukses HTML-ja e faqes Popullore.
  • Skrapoi meta të dhënat e nevojshme me Python.
  • Përpunoi ato të dhëna, kështu që do të ishte gati për analizë.
  • Ngarkoi të dhënat në një Panda DataFrame.

Tani, ne jemi gati t'i përgjigjemi pyetjes kryesore:

Sa popullor është COVID-19 në Medium?

Duke analizuar të dhënat

Gjëja e parë që duhet të bëja ishte vendosja e fjalëve kyçe që doja të kërkoja. Nuk do të kisha gjasa të marr çdo artikull në lidhje me COVID-19 në faqen Popullore nëse do të kërkoja vetëm për "coronavirus" dhe "COVID-19". Shfletova titujt dhe titrat e DataFrame dhe dola me një listë që mendova se do të kapte shumicën e pjesëve përkatëse:

# define keywords to look for
keywords = ['coronavirus',
            'quarantine',
            'COVID-19',
            'mask',
            'N95',
            'disinfect',
            'pandemic',
            'outbreak',
            'zoom',
            'quarantine',
            'isolation']

Më pas, shkrova një lak që do të kontrollonte çdo rresht të DataFramepër një fjalë kyçe. Kjo nënkuptonte kombinimin e rreshtave së bashku, konvertimin e atij rezultati në një varg dhe kontrollin për të parë nëse çdo fjalë kyçe ishte në varg. Nëse fjala kyçe ishte në varg, True do të shtohej në kolonën e fjalës kyçe në DataFrame.

# search rows for keywords and show True if there is a match
for keyword in keywords:
    df[keyword] = df.astype(str).sum(axis=1).str.contains(keyword, case=False)

Doja gjithashtu një rresht që do të tregonte nëse ndonjë nga fjalët kyçe përputhej, që të kishte një kolonë që tregonte nëse pjesa ishte apo jo e lidhur me COVID-19. Shtova një rresht tjetër për të kontrolluar nëse ndonjë nga kolonat df[keyword] ishte e vërtetë.

df['Keyword Match'] = df.astype(str).sum(axis=1).str.contains('True', case=False)

DataFrame tani dukej kështu:

Në këtë pikë, unë mund të kisha kaluar direkt në Tableau për më shumë analiza dhe vizualizim. Por duke qenë se unë tashmë po punoja me Pandat, vendosa të bëja pak më shumë përpunim në fletoren time për të bërë më shumë praktikë.

Hapi tjetër ishte numërimi se sa herë është përdorur çdo fjalë kyçe, si dhe se si artikujt lidhen me COVID-19. Krijova një DataFrame të ri me vetëm fjalë kyçe që përmbajnë vlerën e vërtetë ose të rreme. Më pas, përdora value_counts për të numëruar sa herë u shfaqën True dhe False në secilën kolonë. Funksioni apply pra the value_counts mund të aplikohet përgjatë boshtit të DataFrame.

# add to existing keywords list for the total count column created
keywords.append('Keyword Match')
# define count of keywords df and get count of each column
count_of_keywords = df[keywords]
count_of_keywords = count_of_keywords.apply(pd.Series.value_counts)

Rezultati DataFrame na dha një numërim se sa herë ishte e pranishme secila fjalë kyçe, si dhe numrin total të artikujve që kishin një fjalë kyçe të lidhur me COVID-19.

Në këtë pikë, unë pata gjetjen time kryesore. Mund të them se në bazë të fjalëve kyçe që kisha përcaktuar, 66 nga 260 artikuj në faqen Medium Popular ishin të lidhura me COVID-19. (Në artikullin kryesor që botova, shkrova se ishte nga 262 artikuj, pasi dy të tjerë ishin shtuar në faqen Popullore.) Kjo do të thoshte se:

Me fjalë të tjera, 66/262 ≈ 25% e pjesëve në faqen Medium Popular kanë të bëjnë me koronavirusin.

Më pas, doja të shihja nëse tema të tjera ose fjalë kyçe po dilnin shpesh në faqen Medium Popular. Kjo do të ishte një metrikë dytësore, për të përcaktuar se sa popullore ishte tema e COVID-19. Ndoshta po paragjykoja analizën time duke kërkuar vetëm fjalë kyçe për COVID-19. Kështu që bëra një kontroll të dytë për të gjetur të gjitha fjalët më të zakonshme në titujt dhe titrat.

Kam përdorur stopwords të modulit nltk për të filtruar fjalët e zakonshme si "nga", "për" dhe "me". Më pas i konvertova titullin dhe nëntitullin në tekst dhe Counter dhe .most_common të Python për të gjetur se sa herë ka ndodhur çdo fjalë. (Nëse nuk i keni hasur më parë, shikoni "docs".) I ngarkova rezultatet në një DataFrame dhe i eksportova rezultatet në Excel.

# Generate DF out of Counter
rslt = pd.DataFrame(Counter(words).most_common(100),columns=['Keyword', 'Frequency']).set_index('Keyword')

Menjëherë mendova se diçka nuk shkonte. Numërimi për “coronavirus” ishte 29, kur analiza ime e mëparshme tregoi se ishte 38. Megjithatë, kur lëviza poshtë, pashë se kishte një fjalë kyçe tjetër “coronavirus:”, e cila përbënte pjesën tjetër. të vlerave që mungojnë. Numri i fjalëve kyçe "COVID-19" përputhej me përputhjen time fillestare të fjalës kyçe, kështu që vazhdova me analizën.

Bazuar në fjalë kyçe të reja, nuk dukej sikur kishte tendenca të tjera kryesore. Asnjë fjalë tjetër e përmendur më shumë se 10 herë nuk ishte një emër që tregonte ndonjë temë tjetër në trend. Si i tillë, unë vazhdova përpara me premisën se COVID-19 ishte tema më e popullarizuar në Medium nga nëntori 2019 deri në maj 2020. Isha gati të kaloja në vizualizimin e rezultateve.

Vizualizimi i të dhënave

Meqenëse kisha përfunduar pjesën më të madhe të përpunimit me Pandat, kështu që isha gati të krijoja grafikët e mi në Tableau. Ky seksion tregon se sa e lehtë është të përdoret Tableau për të krijuar grafikë - nuk përfshin ndonjë funksionalitet kompleks të Tabelës.

Me katër klikime, importova eksportin e Excel që përmban numrin e fjalëve kyçe të lidhura me COVID-19.

Tabela është shumë miqësore me tërheqje dhe lëshim. Për të krijuar këtë grafik, unë zhvendosa Keyword Match (e cila në fletën e Excel është një listë e fjalëve kyçe) në Rows, më pas zhvendosa True (d.m.th. nëse një fjalë kyçe ishte në titull ose nëntitull) në Columns. Kjo duhet të krijojë automatikisht një grafik për ju. Jeni të lirë të zgjidhni çfarëdo lloj grafiku që dëshironi nëse klikoni Show Me lart djathtas. Zgjodha grafikun horizontal, pasi dukej si mënyra më e mirë për të vizualizuar të dhënat. E përsërita këtë proces kur krijova grafikun për të gjitha fjalë kyçe të tjera të zakonshme.

Këtu, bëra pak më shumë përpunim, duke hequr fjalët që mendoja se nuk më ndihmonin për të kuptuar atë që ishte e njohur në Medium. Për shembull, "e mundur", "e drejtë" dhe "përdorimi" gjithashtu kanë ndodhur më shumë se një herë, por nuk kanë treguar ndonjë tendencë specifike. Ju mund të përjashtoni fjalë kyçe duke shtuar një filtër, siç mund ta shihni në pamjen e mësipërme, ose duke klikuar çdo shirit individual në grafik, do të shihni një opsion për ta përjashtuar atë nga rezultatet.

Lexim manual

Për ta çuar analizën një hap më tej, doja të nxjerr temat më të zakonshme nga artikujt në mënyrë specifike për COVID-19. Nuk mund ta bëja këtë nga fjalët kyçe të nxjerra më herët, pasi të vetmet fjalë të zakonshme midis të gjithë artikujve ishin "coronavirus" dhe "COVID-19". Si i tillë, vendosa të bëj të gjithë listën e titujve dhe t'i hedh një vështrim manualisht një mostre të rastësishme prej pesë pjesësh.

Në frymën e mbajtjes së gjërave në Python, shkrova këtë rresht të shpejtë për të zgjedhur artikujt:

# Random article index generator
import random
for i in range(0,5):
    print(random.randint(0,68))

Pastaj, shkova dhe lexova pesë pjesët dhe shkrova një përmbledhje të shpejtë të të gjithave. Temat më të zakonshme ishin:

  • Ngjarjet e tanishme.
  • Shëndeti dhe siguria.
  • Përvojat personale.

Tani i dini të gjitha hapat që kam marrë për të shkruar "Sa popullor është COVID-19 në Medium?" artikull!

Pra, sa popullor është COVID-19 në media?

Nuk mendoj se jam vetëm unë që shoh vazhdimisht pjesë të lidhura me koronavirusin në ushqimin tim. Unë përfshiva artikuj që në nëntor 2019 në analizën time, pasi rasti i parë (gjoja) i COVID-19 ishte në 1 dhjetor. Kështu dola me statistikën se një në katër artikuj në faqen Medium Popular ka diçka të bëjë me koronën (66 ndeshje nga 262 pjesë gjithsej).

Është interesante të theksohet se nëse shkojmë nga koha kur u publikua artikulli i parë për COVID-19, kjo e çon totalin tonë në 121 pjesë në faqen Popular. Pra, 54% e artikujve në faqen "Medium's Popular" nga 2 marsi deri më 1 maj kanë të bëjnë me koronavirusin.

Mendoj se nuk isha aq larg pikës kur thashë se gjysma e asaj që kam lexuar ka të bëjë me COVID-19. Qëllimi i kësaj nuk është të thuhet se ky trend është i mirë apo i keq. Është vetëm një vështrim në atë që kanë lexuar të gjithë në Medium.

Kufizimet dhe ndjekja

Gjëja e parë që dua të theksoj është se e gjithë kjo analizë është e mbushur me përpunime shtesë që kam bërë mbi të dhënat bazuar në gjykimin tim. Kjo përfshin mundësinë e rezultateve false në numërimin tim, të cilët artikuj kishin lidhje me COVID-19. Pashë manualisht shumë pjesë që dolën si pozitive, në mënyrë që të mund të pretendoja se 1/4 e artikujve kishin të bënin me COVID-19. Sidoqoftë, është e mundur që fjalët kyçe që përcaktova mund të kenë përfshirë një artikull që përdorte një fjalë si "maskë" ose "izolim" pa diskutuar mbi pandeminë. Kjo përfshin gjithashtu zgjedhjen time për të hequr "fjalë kyçe të tjera të zakonshme" kur paraqesim grafikun nga Tableau.

Mendoj se bërja e projekteve si ky ekspozon shumë boshllëqe në njohuritë e mia. Pas kësaj, mësova mënyra të reja për të përdorur Python, si përdorimi i lxml për të përdorur përzgjedhësit XPath në mënyrë që të mund të analizoja HTML. Si gjithmonë, StackOverflow më dha përgjigje për pyetjet dhe idetë se si të filloja (dhe disa kode të vlefshme për t'u përdorur). Një nga përfitimet kryesore nga kjo, megjithatë, është të lini më shumë kohë për të mësuar. Mendoj se kohët e fundit kam mësuar shumë duke bërë, por gjithashtu duhet ta balancoj këtë me të mësuarit duke mësuar.

Disa ide personale të të mësuarit vijues:

  • Krijimi i një baze të dhënash të përditësuar vazhdimisht me meta të dhëna nga pjesët e paraqitura në faqen Popullore të Mediumit.
  • Rishikimi i disa funksioneve kryesore të Pandas dhe mënyrat për ta përdorur atë më mirë.
  • Duke hedhur një vështrim të thellë se çfarë është në gjendje nltk.

Shpresoj se kjo ju informoi qartë se si bëra një projekt të shpejtë dhe të ndyrë kërkimor në faqen e Medium's Popular. Nuk është definitivisht perfekte, por mendova se dokumentimi i asaj që bëra tani do të nënkuptonte që një vit më vonë, mund ta shikoj këtë dhe të krijoj diçka me cilësi shumë më të mirë.

Bonus: Autorët që frekuentojnë faqen popullore të mediumit

Meqenëse i kisha tashmë të dhënat, mendova se mund të tregoja se kush ishte vazhdimisht në krye të faqes Popular të Medium. Mendova se mund të përpiqesha të gjeja një formulë sekrete nga shkrimi i tyre, por gjithçka që hoqa në të vërtetë ishte "uau, ata janë shkrimtarë të mirë". Këtu është një rresht kodi dhe rezultojnë DataFrame të emrave të autorëve dhe numri i herëve që ata kanë qenë në faqen Popullore (nga nëntori 2019 deri në maj 2020):

# authors to hit the popular page most
popular_authors = df[['Author','Title']].groupby(['Author']).count().sort_values(by='Title',ascending=False).head(20)

Dëshiroj të falënderoj edhe një herë të gjithë ata që punojnë në sektorin mjekësor gjatë pandemisë COVID-19. Disa vende duken mirë në rrugën e tyre drejt rimëkëmbjes, gjë që sjell shpresë dhe ngushëllim shumë të nevojshëm për ata që janë prekur nga virusi. Është për shkak të përpjekjeve tuaja që ne kemi atë shpresë, kështu që ju faleminderit shumë për rrezikun që merrni çdo ditë duke punuar për të luftuar këtë sëmundje.