背景

joyful-pandas 是Datawhale Github 仓库中非常优秀的开源教程之一,目前有 582 个Forks,1835 个Star。这个假期 Python、Numpy 的组队学习的材料已经整理完毕,想着把 Pandas 刷一遍就开始 sklearn 了。

怎么刷 Pandas 呢?我的方法就是用输出来倒逼输入,把 joyful-pandas 中的所有习题做完并用图文的形式展现出来。 一是记录自己的学习过程,二是给大家提供一个学习 Pandas 的参考。


习题

现有一份关于美剧《权力的游戏》剧本的数据集存储于Game_of_Thrones_Script.csv文件中。

import pandas as pddf = pd.read_csv('data/Game_of_Thrones_Script.csv')
print(df.info())
# <class 'pandas.core.frame.DataFrame'>
# RangeIndex: 23911 entries, 0 to 23910
# Data columns (total 6 columns):
#  #   Column         Non-Null Count  Dtype
# ---  ------         --------------  -----
#  0   Release Date   23911 non-null  object
#  1   Season         23911 non-null  object
#  2   Episode        23911 non-null  object
#  3   Episode Title  23911 non-null  object
#  4   Name           23911 non-null  object
#  5   Sentence       23911 non-null  object
# dtypes: object(6)
# memory usage: 1.1+ MB

数据集中字段的含义如下:

  • Release Date:发行日期
  • Season:第几季
  • Episode:第几集
  • Episode Title:每集的标题
  • Name:出现的人物
  • Sentence:所说的话

请解决以下问题:

(a)在所有的数据中,一共出现了多少人物?

(b)以单元格计数(即简单把一个单元格视作一句),谁说了最多的话?

(c)以单词计数,谁说了最多的单词?(不是单句单词最多,是指每人说过单词的总数最多,为了简便,只以空格为单词分界点,不考虑其他情况)

参考答案:

import pandas as pddf = pd.read_csv('data/Game_of_Thrones_Script.csv')
print(df['Name'].nunique())  # 564
print(df['Name'].value_counts().index[0])  # tyrion lannisterdf_words = df.assign(Words=df['Sentence'].apply(lambda x: len(x.split())))
a = pd.Series(0, index=df['Name'].unique())
for name in a.index:a[name] = df_words.loc[lambda x: x['Name'] == name]['Words'].sum()b = a.sort_values(ascending=False)
print('Name:{0},Words:{1}'.format(b.index[0], b[0]))
# Name:tyrion lannister,Words:26009

可见,在所有的数据中,一共出现了 564 人。说话最多的是 tyrion lannister,以单词计数 tyrion lannister 仍然是说单词数最多的,共计 26009 个单词。


知识点

1. unique和nunique

  • nunique():显示有多少个唯一值。
  • unique():显示所有的唯一值。
class IndexOpsMixin:def nunique(self, dropna: bool = True) -> int:class Series(base.IndexOpsMixin, generic.NDFrame):def unique(self):

在本例中通过nunique()函数可以得到出现人物的个数,unique()函数可以得到出现人物的列表。

2. count和value_counts

  • count():返回非缺失值元素个数。
  • value_counts():返回每个元素有多少个。
class IndexOpsMixin:def value_counts(self, normalize=False, sort=True, ascending=False, bins=None, dropna=True):class Series(base.IndexOpsMixin, generic.NDFrame):def count(self, level=None):

在本例中通过value_counts()得到每个人物出现的次数,并由大到小排列。其中index为人物列表,values为该人物出现的次数。

3. 利用assign方法来增加列

class DataFrame(NDFrame):def assign(self, **kwargs) -> "DataFrame":

在本例中增加了统计Sentence单词个数的新列Words,通过该列来记录Sentence中单词的个数。

4. loc 函数式索引

class IndexingMixin:@propertydef loc(self) -> "_LocIndexer":

在本例中通过loc函数式索引查找满足Name等于要查找名称的所有记录。之后对这些记录的Words求和,就可得到这个人所说的单词总数。

5. 值排序

class Series(base.IndexOpsMixin, generic.NDFrame):def sort_values(self,axis=0,ascending=True,inplace: bool = False,kind: str = "quicksort",na_position: str = "last",ignore_index: bool = False,key: ValueKeyFunc = None,):class DataFrame(NDFrame):def sort_values(self,by,axis=0,ascending=True,inplace=False,kind="quicksort",na_position="last",ignore_index=False,):

在本例中通过sort_values()对每个人所说的单词数由大到小排序,取出第一个即可得到最大的单词数量。

6. 第一章 Pandas基础 的知识导图


总结

通过做练习题来巩固 Pandas 的知识点是熟悉 Pandas 的一种有效方式,以往遇到问题直接就摸索着来用了,这次跟着 joyful-pandas 系统的学习一遍夯实基础。大家一起努力。See You!


后台回复「搜搜搜」,随机获取电子资源!
欢迎关注,请扫描二维码:



技术图文:基于《权力的游戏》数据集学Pandas相关推荐

  1. Dataset之MNIST:MNIST(手写数字图片识别+ubyte.gz文件)数据集的下载(基于python语言根据爬虫技术自动下载MNIST数据集)

    Dataset之MNIST:MNIST(手写数字图片识别+ubyte.gz文件)数据集的下载(基于python语言根据爬虫技术自动下载MNIST数据集) 目录 数据集下载的所有代码 1.主文件 mni ...

  2. 技术图文:如何利用 C# 实现 误差反向传播 学习规则?

    背景 我们在 如何利用 C# 对神经网络模型进行抽象? 中完成了神经网络的抽象结构: 三个接口:激活函数.有监督学习.无监督学习 三个抽象类:神经元.网络层.网络拓扑 我们在 如何利用 C# 实现神经 ...

  3. 放射学中基于影像组学和人工智能预测癌症预后

    人工智能(AI)在医学影像诊断中的成功应用使得基于人工智能的癌症成像分析技术开始应用于解决其他更复杂的临床需求.从这个角度出发,我们讨论了基于人工智能利用影像图像解决临床问题的新挑战,如预测多种癌症的 ...

  4. 【机器学习】基于天气数据集的XGBoost分类与预测

    目录 一.学习知识点概要 二.学习内容 代码 1.导入库 2.对离散变量进行编码 3.利用 XGBoost 进行训练与测试 4.利用 XGBoost 进行特征选择 5.模型调参 三.学习问题与解答 四 ...

  5. ML之FE:基于load_mock_customer数据集(模拟客户,单个DataFrame)利用featuretools工具实现自动特征生成/特征衍生

    ML之FE:基于load_mock_customer数据集(模拟客户,单个DataFrame)利用featuretools工具实现自动特征生成/特征衍生 推荐文章 ML之FE:基于load_mock_ ...

  6. ML之FE:基于自定义数据集(银行客户信息贷款和赔偿)对比实现特征衍生(手动设计新特征、利用featuretools工具实现自动特征生成)

    ML之FE:基于自定义数据集(银行客户信息贷款和赔偿)对比实现特征衍生(手动设计新特征.利用featuretools工具实现自动特征生成) 目录 基于自定义数据集(银行客户信息贷款和赔偿)对比实现特征 ...

  7. ML之LightGBM:基于titanic数据集利用LightGBM和shap算法实现数据特征的可解释性(量化特征对模型贡献度得分)

    ML之LightGBM:基于titanic数据集利用LightGBM和shap算法实现数据特征的可解释性(量化特征对模型贡献度得分) 目录 基于titanic数据集利用LightGBM和shap算法实 ...

  8. TensorFlow基于cifar10数据集实现进阶的卷积网络

    TensorFlow基于cifar10数据集实现进阶的卷积网络 学习链接 CIFAR10模型及数据集介绍 综述 CIFAR10数据集介绍 CIFAR10数据集可视化 CIFAR10模型 CIFAR10 ...

  9. 技术干货 | 基于MindSpore更好的理解Focal Loss

    [本期推荐专题]物联网从业人员必读:华为云专家为你详细解读LiteOS各模块开发及其实现原理. 摘要:Focal Loss的两个性质算是核心,其实就是用一个合适的函数去度量难分类和易分类样本对总的损失 ...

最新文章

  1. mysql主从复制,半同步,主主复制架构的实现
  2. ES5原生api(2)
  3. 拥有此神技,脚本调试从此与 echo、set、test 说分手
  4. 【EXLIBRIS】二十唯识白话译本【ZZ】
  5. 算法复习——迭代加深搜索(骑士精神bzoj1085)
  6. 数据泵避免个别表数据的导出
  7. Data Visualization [--0]
  8. 数据清洗----缺失值处理
  9. Arduino教程 RFID-RC522读IC卡门禁原理及破解防御
  10. 在哪下载公司考勤刷卡特殊情况说明Excel模板
  11. 左程云算法菜手班整理(一)
  12. Vant Weapp - 有赞出品的免费开源微信小程序组件库
  13. Windows下设置Mongodb用户名密码
  14. 51nod 1272 最大距离 By Assassin
  15. amcharts使用总结
  16. error: RPC failed; curl 56 GnuTLS recv error (-9): A TLS packet with unexpected length was
  17. matlab 卡丹 公式,一般三次方程谢国芳求根公式的推导方法2(基于卡丹公式的推导).doc...
  18. 视图、创建视图的语法、视图的作用
  19. OAuth2学习(二)——OAuth2实战
  20. CSUST 2007-我爱吃烧烤(状压DP)

热门文章

  1. 定时任务一(quartz):纯java
  2. mysql中的Decimal括号怎么写,decimal(m,d)
  3. Vue Loading插件
  4. 当下这个时代,一个没学历智力情商也低的人,他是如何破局的?深度思考后的回答!...
  5. html照片编辑,照片编辑器「Photo Editor」
  6. N880e 刷机记录和一些经验
  7. 从育碧、工业光魔归来,做原创国漫!20年动画人徐健的CG路
  8. xmd后缀名改mp3_MP3提取转换器
  9. 【练习七 字符串编程题10. 炸弹】
  10. 几何坐标转化为极坐标