racinmat / mal-analysis

github repo for MyAnimeList analysis. Also links to the MAL dataset.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Anime analysis

This is repo for analysing anime from big anime databases. The main datasource will be MyAnimeList (MAL), and maybe later some others.

Anime sources:

User sources: As the first source, I am using the Dibakarroy1997/myanimelist-data-set-creator repo, for that I need user IDs. So I need user ids (ideally active users) for scrapping ratings per user. So far I am scraping forum topics to get user ids: command for scrapping with sample id: python .\createUserListFromPost.py 1582476 user-lists/UserListPost1582476.txt Topics scraped so far - all 8 watching challenge threads

user location and gender must be scraped from official page :(

Previous analyses - for baseline:

DataSet

Some data are already scraped and can be downloaded here https://uloz.to/tam/_uNFuK0YI1Vmk They are not cleaned and normalized, and far from complete yet. It contains:

  • 204 334 unique usernames
  • 19 200 users with downloaded ratings and animelists
  • 6 014 042 animelist records
  • 3 564 447 ratings in animelists
  • 13 983 unique anime ids based on ratings and animelists
  • 11 800 anime with downloaded data

The newer version of part of scraped data can be downloaded here: https://uloz.to/tam/_jGFnKV19IIrD As above, data are not normalized, only in pickle for easier manipulation and compression during scraping. It contains:

  • 204 334 unique usernames
  • 46 800 users with downloaded ratings and animelists
  • 14 704 980 animelist records
  • 8 634 113 ratings in animelists
  • 13 983 unique anime ids based on ratings and animelists
  • 13 983 anime with downloaded data The newer version is also available in CSV form, more useful to work with. It can be downloaded here: https://uloz.to/tam/_xZxO5NeiaNqO It contains same data as binary files above.

3rd version of harvested data can be downloaded here: https://uloz.to/tam/_jU7mHh94xIWB It contains both pickle and CSV files. It contains:

  • 302 841 unique usernames
  • 75 800 users with downloaded ratings and animelists
  • 23 753 842 animelist records
  • 14 009 170 ratings in animelists
  • 14 426 unique anime ids based on ratings and animelists
  • 14 269 anime with downloaded data

4th version of harvested data can be downloaded here: https://uloz.to/tam/_c1ESfrgpyqrJ It contains both pickle and CSV files. It contains:

  • 302 841 unique usernames
  • 125 200 users with downloaded ratings and animelists
  • 39 184 237 animelist records
  • 23 096 715 ratings in animelists
  • 14 430 unique anime ids based on ratings and animelists
  • 14 269 anime with downloaded data

5th version of harvested data can be downloaded here: https://uloz.to/tam/_1VwDx2NIBaYh It contains both pickle and CSV files. It contains:

  • 302 841 unique usernames
  • 146 700 users with downloaded ratings and animelists
  • 45 626 200 animelist records
  • 26 832 473 ratings in animelists
  • 14 441 unique anime ids based on ratings and animelists
  • 14 269 anime with downloaded data
  • 68 975 of users also have demographics data

6th version of harvested data can be downloaded here: https://uloz.to/tam/_Rl1XPwuqnsvn It contains only CSV files. It contains:

  • 302 841 unique usernames
  • 235 200 users with downloaded ratings and animelists
  • 65 233 633 animelist records
  • 37 987 916 ratings in animelists
  • 14 466 unique anime ids based on ratings and animelists
  • 14 269 anime with downloaded data
  • 183 188 of users also have demographics data

7th, final version of harvested data can be downloaded here: https://uloz.to/tam/_5fvufuNgAMBa It contains only CSV files. It contains:

  • 302 841 unique usernames
  • 302 675 users with downloaded ratings and animelists
  • 80 076 112 animelist records
  • 46 358 322 ratings in animelists
  • 14 478 unique anime ids based on ratings and animelists
  • 14 478 anime with downloaded data
  • 302 573 of users also have demographics data loaded
  • 217 817 of them have gender
  • 217 800 of them have ratings and gender
  • 282 918 of them have all annotations and some anime in animelist

last dataset with filtered data (only users with location, birth date and gender) can be downloaded here: https://uloz.to/tam/_T8ba4GEWWEpe The native .rick version can be loaded into python as

import pickle
with open('UserList.rick', 'rb') as f:
    users = pickle.load(f)
    
with open('AnimeList.rick', 'rb') as f:
    animes = pickle.load(f)

The CSV can be loaded with pandas as you are used to

import pandas as pd

animes = pd.read_csv('AnimeList.csv')
users = pd.read_csv('UserList.csv')
animeLists = pd.read_csv('UserAnimeList.csv')

or you just can open it in Excel or whatever.

just other stuff and notes

tools and other ideas: voyager - web based tool for datasets exploratory analysis:

vega-lite - other tool for visualizations, specifications in json:

lyra - completely code-less, only web-based GUI:

jinak klasika: paraview, tableau, gephi

pro python: networkx pro grafy, plot.ly + dash na interaktivní vizualizace https://dash.plot.ly/getting-started

d3 for nice javascript graphs: https://github.com/d3/d3/wiki/gallery

nápady:

  • zjistit velké rozdíly v hodnocení anime, s velkým rozptylem, kde je hodnotí hodně lidí velmi kladně a hodně lidí velmi záprně
  • podívat se na rozdíly mezi hodnoceními v čase
  • rozdíl mezi lidmi co hodnotili málo a co hodnotili hodně anime, co viděli a co hodnotili za díla
  • korelace score, žánrů, sledovanosti, a času, a lidí, co sledují hodně, málo
  • rozclusterovat lidi na málohodnotící, a hodně hodnotící, podle střední hodnoty hodnocení apod.
  • prozkoumat recency bias u vydání anime, gender split
  • prozkoumat plan to watch listy
  • prozkoumat sledovatnost žánrů v závislosti na zemi, věku, pohlaví, ale i času, a časový vývoj různých věcí, zkusit změnu trendů v čase, vývoj počtu děl v žánru, průměrné oblíbenosti žánrů v čase apod
  • udělat časový vývoj podobně jako https://www.gapminder.org/videos/200-years-that-changed-the-world/?
  • vývoj do spiral chartu, například průměrné hodnocení anime podle data vydání: https://stackoverflow.com/questions/46575723/creating-a-temporal-range-time-series-spiral-plot
  • časový výoj počtu anime různých žánrů a proměrné hodnocení jako video podobné 200 years? průměr hodnocení na ose a počet kusů jako velikost kolečka?
  • u těch žánrů to zkusit kumulativně, anime do té doby, a anime co vyšly v daném roce, nebo v intrvalu např. 5 let a posouvat interval v čase
  • zjistit vztahy mezi žánry na základě toho, kolik anime dané řánry sdílí (vzdálenost žánrů podle anime, co je mají, a embedding, případě ukáztat v čase)
  • podívat se na nejdropovanější série
  • korelace mezi dokončenými a dropnutými žánry?
  • zkusit nějaké graphical models a podmíněné grafové věci jako jsme měli v SMU?
  • ukázt source v závislosti na čase u anime, i žánry a studia v čase
  • ukázat jointploty kde, bude to vypadat hezky
  • zkusit metriky co popisuje Šlerka http://databoutique.cz/post/161312186128/slu%C5%A1n%C3%AD-lid%C3%A9-na-facebooku
  • spojitost studií a žánrů, prozkoumat žánrové zastoupení, demografii fanoušků a vývoj v čase u jednotlivých studií
    • tohle nešlo dohledat jinde a tím pádem to může být hodně zajímavé
    • souvislost průměrného hodnocení a žánrů u jednotlivých studií? komu jaký žánr "jde lépe"?
  • zkusit znormovat hodnocení anime na normální rozdělení s mean=5.5, upravit podle toho hodnocení a ukázat, jak si některé tituly povedou
  • zkusit embeddované žánry sgroupovat do menšího počtu žánrů -> představit menší počet ensemble žánrů?
  • zkusit rozdělit anime podle ratingů? (slide na anime is not for children apod.), a pak zkusit studia a ratingy apod.
  • funny nápad:
    • stahnout data o seyiu, a v jakých anime byli
    • definovat Erdosovo číslo
    • napočítat to samé pro seiyu (kolaborace = stejné anime)
    • definovat Picovo číslo jakožto kolaborativní vzdálenost os seiyu Pica z Boku no Pico
    • nějak vizualizovat, napočítat průměrnou vzdálenost apod.
    • ukázat na tom míru kolaborace mezi seiyu
    • už existuje pro herce Bacona https://en.wikipedia.org/wiki/Six_Degrees_of_Kevin_Bacon#Bacon_numbers
    • zmínit nejdříve Erdose, potom Bacona a vybrat nějakého slavného / neobvyklého seiyu, a definovat čísla pro seiyu
    • použít někoho z Hanazawa Kana a Kamiya Hiroshi, ty jsi nejznámější
  • spočítat vlastní popularity, porocnat s tou MALovou?
  • ukázat rozložení žánrů a studií pro populární anime (top 2k anime?) a porovnat s rozložením pro všechna
  • vztah mezi řánry a ratingy? jak hodnocení, tak omezení na věkovou kategorii
  • srovnat jak velká část anime je skutečně pro děti
  • co porovnávám v čase, porovnat i u všech X populárních anime (jsou tam různá zastoupení žánrů apod.?)

strukturova přednášku:

  • pipeline a obecné věci
  • současný stav (anime, useři a vůbec)
    • useři - jen určitá věková skupina apod.
    • anime, nezávisle na userech
  • nějaké top 10 apod.?
  • vývoj v čase (anime, useři, možná i hodnocení apod.) - kde na ose X je čas
  • sem možná vývoj v čase jako gify?
  • složitější věci, jako jsou vzdálenosti, embedding apod.
    • u metrik (cosine similarity apod.) dát vzorec a malou ukázku pomocí vektorů a šipek na podporu reality

popis podobnosti visual novel v grafech: For the attraction value specifically, IIRC, it went along these lines (for nodes A and B)

bunnyadvocate similarityAB = /

similarityBA = /

attraction = (1-sqrt((1-similarityAB)*(1-similarityBA)))^3 the attraction between two nodes was always the same going each way, A->B and B->A or else you get messy situations where one node is constantly chasing the other as the other is repelled by it more

data notes: days spent watching anime should not be takes seriously because of mismatches. E.g. here: https://myanimelist.net/profile/Tationika 1 332.1 days are spent watching anime because there are 9001 rewatches for Akira and Perfect Blue https://graph.anime.plus/Tationika/profile?referral=search

showing piecharts on world map: http://www.geophysique.be/2010/11/26/matplotlib-basemap-tutorial-06-real-case-pie-charts/

ukázat gif s porovnáním boxplotů a violit plotů a proč je lepší používat violin ploty? pokud tam budu nějaké violin ploty mít ofc

About

github repo for MyAnimeList analysis. Also links to the MAL dataset.


Languages

Language:Jupyter Notebook 100.0%Language:Python 0.0%Language:Shell 0.0%