사람들은 일년의 어느 시기에 시간의 흐름을 느끼는가

이 글은 TSG Advent Calendar 2021 첫날의 글이다.
세월이 쏜살같이 지나가다.
정신을 차린 지 벌써 12월이 되었다.2021년의 91%가 끝났다고 한다.
2021 is 91% complete. pic.twitter.com/yX1LBkYJo0 — Progress Bar 2021 (@ProgressBar202_) November 29, 2021

에서 이 Progress Bar bot은 가끔 TL이 흘러나오는 것을 볼 수 있지만 백분율에 따라 반응의 크기도 차이가 있다.이 녀석에게 답장할 때는 기본적으로 "그렇게 오래됐나!?"이런 느낌이 들었을 때 사람들이 1년 중 몇 퍼센트가 지나갔는지 조사했을 때 사람들이 이bot을 전달하려고 했어요.p>


데이터 수집


Twitter API를 잘 모르기 때문에 옆에 있는 DevTools로 열의를 북돋워 업데이트합니다


2021/12/01 현재 트위터 화면은 화면 밖으로 굴러간 트위터의 DOM이 삭제되고 새로 표시된 트위터 DOM이 생성됩니다.그런 다음 스크립트를 실행하여 이벤트를 감지하고 정보를 수집합니다.


// <div area-label="タイムライン: Progress Bar 2021さんのツイート" class="css-1dbjc4n">
// この子ノードにツイートが詰められている
const elm = document.querySelector("#react-root > div > div > div.css-1dbjc4n.r-18u37iz.r-13qz1uu.r-417010 > main > div > div > div > div > div > div:nth-child(2) > div > div > div:nth-child(3) > section > div");

const tweets = new Set();
const observer = new MutationObserver((mutationList, _) => {
    for (let record of mutationList) {
        for (let node of record.addedNodes) {
            if (node.innerText.includes("@ProgressBar202_")) {
                // 例:"Progress Bar 2021\n@ProgressBar202_\n·\n11月18日\n2021 is 88% complete.\n115\n4,668\n2.8万"
                const text = node.innerText;
                tweets.add(text);
            }
        }
    }
});
observer.observe(elm.children[0], {childList: true});

Devotols로 실행한 후 화가 풀릴 때까지 스크롤합니다.이번에 2018년 12월까지 수집했습니다.


그리고


const tweetsArr = Array.from(tweets);

를 실행한 후 나타나는 그룹을 복사하려면 오른쪽 단추를 누르십시오.



시각화


여기서부터 파이톤을 사용하여 시각화합니다.이전에 복사한 그룹을 파이톤으로 가져옵니다.


tweets = [
    "Progress Bar 2021\n@ProgressBar202_\n·\n11月14日\n2021 is 87% complete.\n77\n4,427\n2.6万",
    "Progress Bar 2021\n@ProgressBar202_\n·\n11月11日\n2021 is 86% complete.\n114\n4,444\n2.7万",
    "Progress Bar 2021\n@ProgressBar202_\n·\n11月7日\n2021 is 85% complete.\n137\n7,648\n3.9万",
    "Progress Bar 2021\n@ProgressBar202_\n·\n11月3日\n2021 is 84% complete.\n84\n4,693\n2.7万",
...

느낌이 좋은regex로 성형하여pandas로 표를 만듭니다.이번에 일본어 환경에서 수집한 것이기 때문에 수량에'만'을 더한 점도 주의해야 한다p>

import re
import pandas as pd

table = {"year": [], "percent": [], "reply": [], "RT": [], "fab": []}
def parse(x):
    if x[-1] == "万":
        return int(float(x[:-1]) * 10000)
    elif "," in x:
        return int(x.replace(",",""))
    else:
        return int(x)

for tw in tweets:
    m = re.search(r"(\d+).* is (\d+)%.*\n(.*)\n(.*)\n(.*)", tw)
    table["year"].append(int(m[1]))
    table["percent"].append(int(m[2]))
    table["reply"].append(parse(m[3]))
    table["RT"].append(parse(m[4]))
    table["fab"].append(parse(m[5]))

df = pd.DataFrame(table)

<p> 사실 2019년 4월께 트위터에 오자가 나온 시기가 있었다.나는 손으로 이것을 수정한다.


"""
'Progress Bar 2021\n@ProgressBar202_\n·\n2019年4月2日\nApologies for my previous post. 2019 (Two thousand and *nineteen*) is 25% complete.\n114\n3,858\n1.2万',
 'Progress Bar 2021\n@ProgressBar202_\n·\n2019年3月29日\n2018 is 24% complete.\n286\n3,160\n1.3万'
"""
df.iloc[269].year = 2019

결과를 시각화


plt.figure(figsize=(15, 10))
plt.subplot(2,1,1)
for year in [2018, 2019, 2020, 2021]:
    data = df[df.year == year].sort_values("percent")
    plt.plot(data.percent, data.RT, ".-", label="%d"%year)
plt.legend()
plt.xlabel("%")
plt.xticks(range(0, 101, 10))
plt.title("# of RTs")
plt.subplot(2,1,2)
for year in [2018, 2019, 2020, 2021]:
    data = df[df.year == year].sort_values("percent")
    plt.plot(data.percent, data.fab, ".-", label="%d"%year)
plt.legend()
plt.xlabel("%")
plt.xticks(range(0, 101, 10))
plt.title("# of fabs")
plt.show()


최고치가


  • 0%, 100%(설날)
  • 10%
  • 20%
  • 25%
  • 50%
  • 69%
  • 75%
  • 80%
  • 90%
  • 99%(연말)

알겠습니다

, 50%가 새해처럼 떠들썩합니다p>

신기한 점은 왜 70%가 아니라 69%(9월 10일 부근) RT/fab가 증가했을까.'1년의 7할이 지나갔다'가 아니라'1년의 7할이 지나갔다'는 점에서 감개무량하다p>


총결산


트위터의 Progress Bar bot(ProgressBar202)RT/fab 수, 사람들이 언제 이것에 반응하는지 조사했다.기본적으로 숫자가 딱 맞을 때나 새해에는 떠들썩했지만 70% 만이 69%의 반응을 보였다.제목의 결론은'1년의 69%가 지나가면 사람들은 시간의 흐름을 느낄 것이다'p>



-- 추기 -아무래도 해외에 이런 고기가 있는 것 같다.부적당한 고찰을 했어...결론 50%로 변경br/>
해설:https://www.dailydot.com/unclick/69-nice-meme-twitter/강력한 Chrome 새 버전 알림: https://twitter.com/ChromiumDev/status/1037022478927912961


좋은 웹페이지 즐겨찾기