データ分析-(学術最前線トレンド分析)-task 2


データ分析-(学術最前線トレンド分析)-task 2
ぶんせき
論文の著者は統計して、すべての論文の著者の出現評価率Top 10の名前を統計します.
インテリジェントポイント
  • データセットを入手し、まず特徴量を見て、著者に関連する特徴を見つけた.抽出(dict)
  • pandasでデータ構造を見ます(前の行を示し、大まかな輪郭があります).
  • 可視化(matplotlib図)
  • 個人的に補足すべき点
  • 今回の作業は比較的簡単で、pythonのpandas、matplotlibライブラリの使い方
  • を熟練しています.
    Q&A
  • sum用法,綴じ作者の場合,pd形式の[[Paal,Mahesh,]]綴じ後[‘Pal’,‘Mahesh’,’]となり,処理後はlistリスト
  • となる.
    sum(data2[‘authors_parsed’],[])
  • リスト内のコンテンツの抽出、接合
  • [’ '.join(x)for x in all_authors] [x[0] for x in all_authors] [x[0] for x in authors_lastname[0]]
    code
    import json
    import pandas as pd
    import matplotlib.pyplot as plt
    
    
    #     TOP10
    data = []
    pre = []
    with open('arxiv-metadata-oai-2019.json','r') as f:
        for idx, line in enumerate(f):
            d = json.loads(line)
            pre.append(d)
            d = {
         'authors:':d['authors'],'categories':d['categories'],'authors_parsed':d['authors_parsed']}
            data.append(d)
    data=pd.DataFrame(data)
    
    #      Top10
    #     Top10
    #             
    
    #      , cv         
    data2 = data[data['categories'].apply(lambda x:'cs.CV' in x)]
    ###     , sum  ,     []sum  ,   all_authors list
    all_authors = sum(data2['authors_parsed'],[])
    
    authors_names=[' '.join(x)for x in all_authors]
    authors_names = pd.DataFrame(authors_names)
    plt.figure(figsize=(10,6))
    authors_names[0].value_counts().head(10).plot(kind='barh')
    names = authors_names[0].value_counts().index.values[:10]
    _ = plt.yticks(range(0,len(names)), names)
    plt.ylabel('Author')
    plt.xlabel('Count')
    
    #   
    authors_lastname = [x[0] for x in all_authors]
    authors_lastname = pd.DataFrame(authors_lastname)
    plt.figure(figsize=(10,6))
    authors_lastname[0].value_counts().head(10).plot(kind='barh')
    names = authors_lastname[0].value_counts().index.values[:10]
    _ = plt.yticks(range(0, len(names)), names)
    plt.ylabel('Author')
    plt.xlabel('Count')
    
    #      
    authors_lastname1 = [x[0] for x in authors_lastname[0]]
    authors_lastname1 = pd.DataFrame(authors_lastname1)
    plt.figure(figsize=(10, 6))
    authors_lastname1[0].value_counts().head(10).plot(kind='barh')
    names = authors_lastname1[0].value_counts().index.values[:10]
    _ = plt.yticks(range(0, len(names)), names)
    plt.ylabel('Author')
    plt.xlabel('Count')