論文著者統計(パンダ文字列操作)

論文著者統計(パンダ文字列操作)

githubに
関連する知識ポイントは次のとおりです
。1。data['categories']。apply(lambda x: 'cs.CV' in x)結果の理解2.sum
関数のネストされたリスト要素のマージ
3.の使用データフレームとシリーズのvalue_counts関数

コードは次のように表示されます。

# 导入所需的package
import json #读取数据,我们的数据为json格式的
import pandas as pd #数据处理,数据分析
import matplotlib.pyplot as plt #画图工具
# 选择类别为cs.CV下面的论文
data2 = data[data['categories'].apply(lambda x: 'cs.CV' in x)]

# 拼接所有作者
all_authors = sum(data2['authors_parsed'], [])

知識ポイント1:data ['categories']。apply(lambda x: 'cs.CV' in x)結果
は、ラムダが無名関数であることを理解しています。関数本体はxの「cs.CV」です。これは、data ['categories']の各行要素が適用によって判断され、結果がTrueまたはFalseに
なり、カテゴリの選択が実現されることを意味します。

知識ポイント2:sum関数のネストされたリスト要素は
sum(data2 ['authors_parsed']、[])を
マージします。ここで、data2 ['authors_parsed']はネストされた構造であり、最外部レベルの各要素はリストで構成されます。リストの要素は、論文の著者です。
sum関数には、sun(iterable、start)の2つのパラメーターがあります。startはsumの初期値、iterableはiterableオブジェクト、sumはiterableオブジェクトの要素を初期値に追加します。つまり、返される結果はstart + iterableのすべての要素です

例:
sum([[1,2]、[3,4]]、[5])
out:[5] + [1,2] + [3,4]
[5,1,2,3,4]

sum([[1,2]、[3,4]]、[[5]])
out:[[5]] + [1,2] + [3,4]
[[5]、1,2、 3,4]

まず、名前の頻度の統計を完成させます。

# 拼接所有的作者
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')

ナレッジポイント33、データフレームおよびシリーズでのvalue_counts関数の使用は、データ
フレームまたはシリーズでの各文字列の出現回数計算するために使用され、頻度はデフォルトで降順で並べ替えられます

完全な構文とパラメーターは
Series.value_counts(normalize = False、sort = True、ascending = False、bins = None、dropna = True)です。normalize
はカウント項目の正規化を表し、sortはソートのデフォルトの降順を表し、昇順は昇順を表します。順序、ビンは数値データのセグメント化されたカウントであり、dropnaはNAのカウントが含まれていないことを意味します

ここに画像の説明を挿入
統計名の姓

authors_lastnames = [x[0] for x in all_authors]
authors_lastnames = pd.DataFrame(authors_lastnames)

plt.figure(figsize=(10, 6))
authors_lastnames[0].value_counts().head(10).plot(kind='barh')

names = authors_lastnames[0].value_counts().index.values[:10]
_ = plt.yticks(range(0, len(names)), names)
plt.ylabel('Author')
plt.xlabel('Count')

ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/qq_43720646/article/details/112727574