python花萼长度表_Python 数据分析答疑 5:Pandas入门
8.23 第五课 Pandas入门作业 1:
使用如下代码创建 DataFrame,
gdp = {"country":["United States", "China", "Japan", "Germany", "United Kingdom"],
"capital":["Washington, D.C.", "Beijing", "Tokyo", "Berlin", "London"],
"population":[323, 1389, 127, 83, 66],
"gdp":[19.42, 11.8, 4.84, 3.42, 2.5],
"continent":["North America", "Asia", "Asia", "Europe", "Europe"]}
gdp_df = pd.DataFrame(gdp, columns = ["country", "capital", "population", "gdp", "continent"],
index = ["US", "CN", "JP", "DE", "UK"])
1. 选出亚洲或者北美洲的国家记录 (提示:使用 isin 方法)
2. 选出 gdp 大于 4 兆亿美元的国家
作业 2:
使用鸢尾花数据集,模仿老师课上的例子,完成如下作业,
1. 画出花萼宽度和长度的散点图,使用品种划分数据
2. 画出花萼的长度的箱线图,使用品种划分数据
作业 3(选做):
根据今天课程学习内容,对提供的 WordIndex.csv 数据进行简单的查看和可视化分析。
注:数据已经在第五课预习资料中提供,本题非常开放,大家可以从数据分析的角度,以文章的形式完成这项作业。提交文章链接即可。
利用课上已学知识,完成一份数据分析文章。首先要了解这份数据的内容?然后可从自己关心的某些维度进行分析。最终得出结论。这个过程会很有趣的。
答疑 Q&A 目录:1,代码运行理解
2,代码运行出错:NaN
3,代码运行出错
4,代码运行理解:iloc/loc
5,代码运行出错
6,代码运行出错:SettingWithCopyWarning
7,代码理解:dataframe
8,代码运行出错
9,代码运行出错
10,读取文件
11,代码理解:()/浮点数
12,代码理解
13,代码出错
14,代码运行出错
15,代码运行出错
16,代码运行出错:NaN
17,代码运行出错
18,代码理解:中扩号/圆括号
19,代码运行出错
图 1Q 1 :最后一题作业,有以下疑问(见图):
1、图是按照洲重新分类汇总后的数据,对于 GDP 和人口,当然可以直接 sum,然对于 Life_expectancy 列,各洲的汇总数据,显然应该根据各国人口进行加权平均,生成新列,请问这个怎么弄?
2、Y 轴是人口数据,其 label 是 '1e9',但若显示为‘十亿’,会更直观,请问如何改成这样?
3、X 轴是各洲 GDP 值汇总,如何在 X 轴下端显示具体的洲名,并能按照不同的颜色显示?
4、如果将 X 轴改为 'continent‘,程序会报错,请问是何原因?
第四问的报错提醒:
KeyError Traceback (most recent call last)
/Users/guizhijie/anaconda/lib/python3.6/site-packages/pandas/core/indexes/base.py in get_loc(self, key, method, tolerance)
2392 try:-> 2393 return self._engine.get_loc(key)
2394 except KeyError: pandas/_libs/index.pyx in pandas._libs.index.IndexEngine.get_loc (pandas/_libs/index.c:5239)()
pandas/_libs/index.pyx in pandas._libs.index.IndexEngine.get_loc (pandas/_libs/index.c:5085)()
pandas/_libs/hashtable_class_helper.pxi in pandas._libs.hashtable.PyObjectHashTable.get_item (pandas/_libs/hashtable.c:20405)()
pandas/_libs/hashtable_class_helper.pxi in pandas._libs.hashtable.PyObjectHashTable.get_item (pandas/_libs/hashtable.c:20359)()
KeyError: 'continent'
A:问题 1,可以采用如下方式计算:(worldIndex['Life_expectancy'] * worldIndex['Population']).sum() / wordIndex['Population'].sum().
还有如果想找 GDP 和人口之间关系,画散点图会更直观,这里的 GDB 只是作为标签,并没有按数值展示。
问题2,pd 的 plot 方法似乎不支持,我再找找方法,有结果通知你。
问题3,直接使用将代码中的 y="GDB_per_capita" 替换为 y="Continent"
问题4,continent 的大小写错了。如错误提示 KeyError
图 2Q 2 :我给一个 DataFrame 按特定顺序排列;然后,我给一个 DataFrame 添加行标签,为什么值全都变成 NaN 了呢?DataFrame 不是可以自动判定其格式吗?
对着课程和书看了好多遍,也找不到原因。求帮忙。
A1:是用 DataFrame 和 Series 的数据类型创建 DataFrame 是无法通过这种方式改变索引的,需要通过类似如下的方式修改:gdb_df.index = ['cn', 'us', ... ]
A2: 这是在赋值操作,而不是修改行索引。给一个 DataFrame 赋值的时候,不能用另一个 DataFrame 数据,而应该用字典。所以出错了。修改标签,就得按照老师上面的这种方法。图 3Q 3 :关于 padas series 判断标签是否在里面,有个疑问:就是 key 值明明在 series 里面,怎么判定的结果还是 false 呢?
如上截图(图 3),哪位高手看到解答下?
A:pandas Series 不支持这种 in 方法,可以将其转化为 list,即 "Asia" in s.tolist() ,
或者使用 pandas 的 == 即可,s=="Asia",返回的布尔型 Series 中如存在 True,即表示存在。
当检查多个元素是,可以使用逻辑运算符 | 或者 isin,如下代码:
s.Continent == "Asia" | s.Continent == "Afria"
s.Continent.isin(["Asia", "Afria"])
如上两种方式都可获取布尔型 series,以此作为布尔索引即可实现内容选择。图 4图 5Q 4 :一个有趣的问题,如图 4 和图 5:关于 iloc 跟 loc 选取行标签的区别。目的:同样选取前四行
A:为此处的行索引就是数字索引。
再解释下 iloc 和 loc:iloc 表示根据索引数字位置查找,而 loc 是根据索引的值来查找。比如如下 series:
0 1
1 2
2 8
这里的索引是 0 1 2,而这些索引的位置也是 0 1 2,所以采用 loc 和 iloc 的结果是一样的。
如果有如下 series:
us 1000
cn 2000
ua 2000
en 1000
这里的索引就是 us cn ua en,而位置是 0 1 2 3,使用 iloc 和 loc 访问的结果就不一样了啊。图 6Q 5 :WorldIndex 显示以洲汇总后的柱状图时,X 轴设置为 Continent 后报错的图片(图6).
注:列名拼写没有问题,是从 csv 文件中复制的列名
A:直接使用 cc.plot(kind='bar', figsize=(15, 8))。要是需要指定画那个列的图,使用如下形式:worldIndex.groupby('Continent').Population.sum().plot(kind="bar")
关于这里之所以没有寿命和 GDB 是因为他们的数量太少,如果想显示可以将每列转化为百分比。
Q 6 :请问 SettingWithCopyWarning 警告是什么原因,该怎么解决这个问题呢?
另外,这里的 Warning 已经在 pandas 的源码级了,可奇怪的是调用堆栈里为何没有显示触发问题的代码?这个能否通过某种设置显示整个堆栈?SettingWithCopyWarning 报警的原因是新增的计算列不能在复制后的 DataFrame 里创建吗?
重新改了下代码,将 sum 列在 tradeLogData 里添加就没报警了
A1: 对的,增加新列直接使用 tradeLogData['sum']= xxx 的形式。不能在 copy 视图上添加新列。可以在原始 dataframe 增加。
Q 7 :在第五课讲述 dataframe 的 gdp 定义中,我有点困惑。
gdp 字典不是按照一条条记录来做字典的 key:value 对,而是已每个记录中的一个列作为键值对。当然了,读到 dataframe 后显示是对的,只是这么些有点反直觉。
请问这么写是有什么原因么?还是因为 dataframe 的输入需要?
A:其实两种方式都可以,只不过还要是访问行的 key-value 需要使用 loc 这个属性来访问。其实可以这样理解,列是这个 dataframe 的属性列,要最快访问,每一列的数据类型是相同的,但是要找每行的数据就会稍微麻烦点。总的来说和使用习惯有关吧。是不是感觉没听懂。记住这个用法就好了。图 7Q 8 : 在做 5-1 作业的时候,用布尔索引就出现这个问题(图 7)。不知道哪里错了.
A:可以先仔细看下,Continent 那一列的变量类型,数字型无法与字符型比较的。 可以看下错误的字面,不可用的类型比较。
Q 9 :在做 5-3 作业的时候出现 TypeError: Empty 'DataFrame': no numeric data to plot 报错,Google 没找到解决办法
A:如果没猜错的话,这里的 Africa 的 DataFrame 是空的,原因:这行代码中,Africa = df[df.Continent == "Africa "] "Africa" 似乎多了一个空格,其他几行也是类似。确认下是不是这个错误。
Q 10 :请问如何把文件和代码放到一个文件夹里/第五课的数据怎么导入到 python 呢?
A:和普通的文件操作是一样的,可以拷贝至对应的文件夹下。或者在 notebook 环境中有个 upload 功能,也可以实现文件的上传。
Q 11 :大家知道为什么使用 numpy 创建二维数组要用两个圆括号么?
另外随机的浮点数都是 8 位的是因为语言是 64 位的原因么?
A:里面的圆括号表示参数,这个参数是一个元组,可以回顾一下元组的表示方式。浮点数是 8 字节大小,每个字节 8 位,也就是 64 位大小,和语言没有直接关系,主要和计算机有关,太深入的计算机知识可不用探究。
元组和列表中的元素可以是 int 值,想更详细了解元组,可以看看这 https://www.w3cschool.cn/python/python-tuples.html
图 8Q 12 :图 8,pandas 新增一列做法。
疑问1:gdp_df["rank"] = "Top5 GDP" 为何输入这个,新增的数据是列而不是行?而gdp_df[0] 切片获取的数据却是每一行的数据
疑问2: 需要新添加一行数据应该如何实现?含下面各项参数("country": "capital":"population":"gdp":"continent": ),发现对于字典来说,add 跟 append 都不支持。
A :疑问 1:这个当做规律记住就好了,算是设计者方便大家的使用。而没有局限于某些固有的思维。
问题 2:可以使用 append 实现,先将字段转化为 series 的变量 s,然后使用 df = df.append(s),即可实现添加。
Q 13 :选做题读取文件时出现问题:FileNotFoundError: File b'WorldIndex.csv' does not exist
A :确认下,文件和代码是否在同一文件夹下,以及文件名是否正确。图 9Q 14 :为什么这里重新定义的 colums 没有大小写呢?
A :拼错了 columns
图 10Q 15 :照着打代码的时候发现了两个问题,在图片里(图 10) 能否帮我解答一下?谢谢~
A:shape(0,3)是不是表示就是空的了,把 >10 换成 >= 再加上 print 试试。
图 12Q 16 :运行着 GDP 数据就出现 NaN 的问题,上一个表格都没有问题
A :‘GDP’这个字符改成小写,你应该是前面就是小写,这里的大写识别不出来。这里是使用 gdb_df.columns 的方式修改的,不是在创建的时候修改的,在创建的时候,需要和字典一致的,在创建之后呢?你就可以使用 gdp_df.columns = [] 的形式对列名进行修改了。
图 13Q 17 :上面两个图(图 13)所示,为何 loc 选列标签会有错误,但是选行标签却没问题
A :.loc[["us"]] 应该使用双中括号
图 15Q 18 : 图 15,这里小括号行 , 中括号为什么就不行呢?老是搞不清什么时候该中括号 ,什么时候该小括号。
A1:小括号是函数,中括号是定位
A2:()&()是讲 and,or,not 时,老师写的固定的表达法。我当定理记下来的,没必要研究那么细
图 16图 17Q 19 :上面两个图(图 16,图 17)所示,我这是哪里出问题了?
A:少了一个 continent
今天整理的时候,遇到一个问题,跑去问老师,老师说,你到这个时候应该能够解答这个问题了。然而,我盯着它看十几分钟,脑子动不了。所以我放弃了那个问题。。。
唉 学习路上那个能力超强的怪兽又来了。。。祝我好运,多点耐心。
Python数据分析答疑5:Pandas入门www.jianshu.com
python花萼长度表_Python 数据分析答疑 5:Pandas入门相关推荐
- python花萼长度表_python描述性统计实践
1.加载相关库和数据集 使用的库主要有:pandas.numpy.sklearn.matplotlib.seaborn 使用的数据集:sklearn库中的鸢尾花数据集 import pandas as ...
- python花萼长度表_读取iris数据集中的花萼长度数据(已保存为csv格式),并对其进行排序、去重,并求出和、累积和、均值、标准差、方差、最小值、最大值...
[判断题]. 为了调整硬度,便于机械加工,低碳钢.低碳低合金钢在锻造后应采用正火处理. [简答题]请大家自由分组,原则上3人一组(成员不足时,2人亦可),以PPT形式提交作业,PPT中一定要写清楚每个 ...
- python数据分析类库_python数据分析类库系列-Pandas入门之数据结构Series
pandas是后续内容的首选库.它含有使数据清洗和分析工作变得更快更简单的数据结构和操作工具. 在后续部分中,我将使用下面这样的pandas引入约定: import pandas as pd 要使用p ...
- python pd Series 添加行_Python数据分析与挖掘的常用工具
Python语言:简要概括一下Python语言在数据分析.挖掘场景中常用特性: 列表(可以被修改),元组(不可以被修改) 字典(结构) 集合(同数学概念上的集合) 函数式编程(主要由lambda(). ...
- anaconda navigator更新_Python 数据分析答疑 1:安装 Anaconda
7.26 第一课 Hello World! 推荐书籍<利用Python进行数据分析> <Python for Data Analysis> pdf 下载地址(英文版):http ...
- 删除python的注册表_Python操作注册表详细步骤介绍
Python操作注册表步骤之1.打开注册表 对注册表进行操作前,必须打开注册表.在Python中,可以使用以下两个函数:RegOpenKey和RegOpenKeyEx.其函数原型分别如下所示. Reg ...
- python访问注册表_Python 操作注册表
通过Python操作注册表有两种方式,第一种是通过Python的内置模块 _winreg:另一种方式就是Win32 Extension For Python 的win32api模块,但是需要进行额外的 ...
- python实操案例_Python数据分析基础实操案例
上游,是勇士劈风破浪的终点,下游,是懦夫一帆风顺的归宿. 本文是Python基础知识点的姊妹篇,以药店销售数据分析为例,带你一起走一遍数据分析5部曲.鲸歌:Python基础知识点zhuanlan.z ...
- python数据处理常用函数_Python大数据处理模块Pandas
Pandas使用一个二维的数据结构DataFrame来表示表格式的数据,相比较于Numpy,Pandas可以存储混合的数据结构,同时使用NaN来表示缺失的数据,而不用像Numpy一样要手工处理缺失的数 ...
最新文章
- GitHub 的 AI 编程工具漏洞高达 40% ,再次陷入争议……
- 大型网站架构之JAVA中间件
- 2410 中断过程处理分析
- 2.5.1 MySQL数据库备份恢复基础讲解
- GitHub学生包的介绍与申请
- 测试流程图_挑战美国Postman VS 龙测搭积木接口测试,谁与争锋
- 希捷银河声音大_每日观影之银河守门员( )
- 嵌入式电路设计(外围模块)
- Web前端-HTTP Cache-control
- 李俊昌《衍射计算及数字全息》代码
- 苹果官方发布受XcodeGhost影响最大的25个App
- Android 深色模式的项目应用
- 数据结构实验——就餐人数最多的时间段
- 共享经济开始崩溃,区块链能否再续共享经济神话?
- Windows下pig-0.17启动时遇到的问题及解决
- 微软的“胡萝卜”会比“大棒”更有效吗
- 个人计算机革命(计算机历史)
- 美女主持直播,被突发意外打断!湾区网友却高喊: 我懂!超甜
- windows下快速实现labelImg环境配置
- 写的一个“打地鼠“小游戏
热门文章
- 求二叉树第K层的节点个数+求二叉树叶子节点的个数
- 爬虫神器xpath的用法(一)
- 临时对象与NRV技术
- VScode 乱装插件环境破坏踩坑自我反思总结
- Win10如何远程连接Windows Server 2008,以及提示“您的凭证不工作”问题解决
- js new Date()不带时分秒时,时间变了 问题解决
- Delphi异常处理总结
- aliyun oss 文件上传 java.net.SocketTimeoutException Read timed out 问题分析及解决
- 完美解决ie8以下不兼容h5的方法
- 在Ubuntu下解决E: 无法对目录 /var/lib/apt/lists/ 加锁的问题