【DataWhale数据分析】Task2学习报告

十分感谢DataWhale的开源分享!!!!

项目GitHub地址:https://github.com/datawhalechina/team-learning-data-mining/tree/master/AcademicTrends

DataWhale数据分析|Task2

任务介绍:

任务要求:

论文作者统计,统计所有论文作者出现频率Top10的姓名

任务流程:
  1. 下载kaggle数据集 【Task1已完成】
  2. 安装所需package:seaborn(数据可视化),BeautifulSoup4(爬虫相关,用于爬取数据),requests(网络通信),json(json格式数据读取),pandas(大数据分析),matploblib(绘图)【Task1已完成】
  3. 数据预处理,提取出所需信息(感兴趣领域的文章以及相对应的作者名称等)
  4. 根据作者名称出现频率绘制直方图

任务详解

1. 数据预处理
1) 选择类别为cs.CV下面的论文
data2 = data[data['categories'].apply(lambda x: 'cs.CV' in x)]

中间的data['categories'].apply(lambda x: 'cs.CV' in x)返回一个bool类型的dataframe列,表示data表中每一行的categories列是否包含‘cs.CV’,与表达式'cs.CV' in x的返回值相同。

  • apply介绍:

apply(func [, args [, kwargs ]]) 函数用于当函数参数已经存在于一个元组或字典中时,间接地调用函数。
args是一个包含将要提供给函数的按位置传递的参数的元组。如果省略了args,任何参数都不会被传递。
kwargs是一个包含关键字参数的字典。简单说apply()的返回值就是func()的返回值,apply()的元素参数是有序的,元素的顺序必须和func()形式参数的顺序一致

  • lambda介绍:

lambda是匿名函数,即不再使用def的形式,可以简化脚本,使结构不冗余

pandas DataFrame 的 applymap() 函数和pandas Series(列) 的 apply() 方法都是对整个对象上个各个值进行单独处理,返回一个新的对象.

pandas Series(列) 的 apply():
pandas series apply
pandas DataFrame 的 applymap():

在这里插入图片描述

而pandas DataFrame 的 apply() 函数,虽然也是作用于DataFrame的每个值,但是接受的参数不是各个值本身,而是DataFrame里各行(或列),返回一个新的行(列):
dataframe apply函数

2)拼接作者名称
all_authors = sum(data2['authors_parsed'], [])
# 拼接所有的作者
authors_names = [' '.join(x) for x in all_authors]
authors_names = pd.DataFrame(authors_names)

在本次任务中,data2['authors_parsed']返回的是每篇文章的所有作者的list,而每个作者的姓和名组成了一个list,因此是list的list,因此需要sum函数来去掉一层list,并通过join函数连接作者的姓名
data2['authors_parsed']

sum(data2[‘authors_parsed’], [ ])中后面是[ ]的缘由:
语法 sum(iterable[, start]),start默认为0,表示起始值

  • 当start为数字时:
    sum((1, 2), 0) ,返回 0 + 1 + 2,OK
    sum((1, 2), 3) ,返回 3 + 1 + 2,很完美
    但当你希望[‘apple’]+[‘banana’] = [‘apple’,‘banana’]时,结果却是0+[‘apple’]+[‘banana’]
    因此,[]便登场了
  • 当start为list时:
    sum((['apple'],['banana']), []) ,返回[ ]+[‘apple’]+[‘banana’],完美
2. 绘制直方图
1)根据作者频率绘制直方图
# 根据作者频率绘制直方图
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')
plt.show()

value_counts函数:用于统计dataframe或series中不同数或字符串出现的次数
语法: Series.value_counts(normalize=False, sort=True, ascending=False, bins=None, dropna=True)

参数名作用
normalize计数项归一化
sort是否对频率项进行排序,默认降序
ascending排序是否升续排列,默认False
bins离散数据的分段,只能作用在数值变量,pd.cut 的简化版
dropna不包括对NA的计数

** dataframe.plot()**
语法:DataFrame.plot(x=None, y=None, kind='line', ax=None, subplots=False, sharex=None, sharey=False, layout=None,figsize=None, use_index=True, title=None, grid=None, legend=True, style=None, logx=False, logy=False,loglog=False, xticks=None, yticks=None, xlim=None, ylim=None, rot=None, fontsize=None, colormap=None,table=False, yerr=None, xerr=None, secondary_y=False, sort_columns=False, **kwds)
由于参数太多,在这里就不一一贴出了,感兴趣可以参考这篇文章
kind参数介绍:

可选参数作用
‘line’(default)折线图
‘bar’条形图
‘barh’横向条形图
‘hist’柱状图
‘box’箱线图
‘pie’饼图
‘kde’Kernel 的密度估计图,主要对柱状图添加Kernel 概率密度线
‘density’same as ‘kde’
‘scatter’散点图
‘hexbin’六边形容器图
‘area’通过区域占比,用于展示定量数据

实验结果:
实验结果

1)根据姓氏绘制统计直方图
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')
plt.show()

实验结果:
全是中国姓,哈哈
实验结果

参考文献:
[1]. DataFrame的apply()、applymap()、map()方法
[2]. 内置函数sum与sum(list,[])有什么关系?
[3]. pandas中value_counts 如何妙用
[4]. [python] pandas plot( )画图命令总结

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Datawhale数据分析课程是一门专门教授数据分析的课程。在这门课程中,学生将学习各种数据处理和分析的技巧,包括数据的载入、基本操作、可视化展示等。在第一章的学习中,学生主要学习了如何载入数据以及如何查看数据的基本信息,例如平均值、标准差、最大最小值,还学习了数据的相加和删减等基本操作,这些都为后面进行数据分析打下了基础。此外,数据可视化也是数据分析过程中非常重要的一部分。通过绘图展示数据,可以帮助人们更直观地理解数据,从而得出更准确的结论。良好的数据可视化往往需要一些技巧,比如可以使用matplotlib和seaborn等库来进行可视化操作。例如,在任务六中,使用seaborn库的kdeplot函数对泰坦尼克号数据集中不同年龄的人生存与死亡人数分布情况进行了可视化展示。此外,Pandas库中的stack()和unstack()方法也是数据分析中常用的工具,用于数据的重构、聚合与运算。通过使用这些方法,可以对数据进行更灵活的处理和分析。例如,在任务一中,通过学习教材《Python for Data Analysis》和进行相关的搜索,可以了解到GroupBy机制在数据分析中的应用。总之,Datawhale数据分析课程提供了丰富的知识和技巧,帮助学生掌握数据分析的基本原理和实践技能。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Datawhale数据分析课程01](https://blog.csdn.net/m0_71038676/article/details/124809826)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [Datawhale数据分析课程第二章](https://blog.csdn.net/miaochangq/article/details/108077004)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值