这个编程系列我采用的方法是,照着老师课件一步步跟做,遇到问题就记录,能搜索解决就搜索解决,搜不到的去提问,尽量找到解答。
简书专栏里有非常完备的新手上路指南(从下载软件开始),我就不一步步搬运了。
Pandas入门
Pandas和NumPy一样,也是在Python基础上开发的另一个工具包,里面有各种工具,解决对应问题。不同于Numpy只能存储一种数据形式,Pandas可以处理多种不同类型的数据。
整体来说,我感觉Pandas是个专注处理批量表格类数据的强大工具包,你可以用它进行数据分析,输出结果也都是正儿八经的表格形式,就像通常办公软件做出来的那样(行、列标签清晰明了)。(仅以目前学到的来看,它旗下有些功能有点像进阶版的excel,以后应该还会有更多更强大的延伸)
一. 知识点提取
1.就像Numpy的操作对象是数组,这节主要介绍Pandas下的两个对象,一个是DataFrame(数据框),另一个是Series。
DataFrame就是一个数据表格
Series只是一列数据表格,类似于一个一维数组,只是前面多了一列索引
2.如何选择数据
选列
[‘列标签’] --- 生成series(一列带索引的数)
.列标签 --- 生成series(一列带索引的数)
[[‘列标签’ ,’列标签’]] --- 选一列,或者多列,生成DataFrame(表格)
.loc[‘列标签’, ’列标签’, …] --- 选一列,或者多列,生成DataFrame(表格)
.loc[:, [‘列标签’, ’列标签’, …] ] --- 选某几列(:代表所有行),生成DataFrame(表格)
.iloc[ : , [‘列索引’, ’列索引’, …] ] --- 选某几列(:代表所有行),生成DataFrame(表格)
说明:以上所指列标签即列名(表头),索引指的是数字(0,1,2…)。
选行
例如[2: 5] , 使用行索引(数字),类似于二维数组切片,是使用[ ]的唯一方法
.loc[‘行标签’, ’行标签’] --- 使用行标签(可用专门的字符缩写,行标签从某种程度上也表示了每行数据主要按照什么进行区分和排列,比如国家、年代等)
.iloc[ [‘行索引’, ’行索引’, …] ] --- 使用索引
说明:以上所选均为对应行的所有列,故都生成DataFrame(表格)。
选行和列
.loc[ [‘行标签’, ’行标签’, …], [‘列标签’,’列标签’, …] ] --- 某几行某几列,标签是列名(多为字符)
.iloc[ [‘行索引’, ’行索引’, …], [‘列索引’,’列索引’, …] ] --- 某几行某几列,索引是数字
总结:.loc用标签,.iloc用索引
布尔索引筛选
布尔索引的使用和Numpy二维数组类似,即先采用判断条件获得一个Boolean Series,然后以此为筛子,筛选对应满足条件(True)的数据。
此处应注意,虽然『筛子』是Series类型,但是筛选之后返回的数据,则是跟原数据一致的,即DataFrame返回DataFrame,Series返回Series。
二. 作业问题总结:
1、or在这里是错误用法,要用 | ,同理 &。
2、采用『: 』选择数据时,这部分不加[ ],直接写。
3、使用布尔索引时[ ]内的条件判断外,不需要再加()
4、很多语句不熟悉,猜导致不会使用,比如 isin,Python的语法形式真的非常简单直接,虽然是代码,但是感觉是精简版的人类语言表达式,一点也不拐弯抹角,比如这个isin。
5、不另外设变量,直接用[ ]套[ ]的模式也能出结果,但是容易出错,比如括号对不上,或是长句子不容易检查错误。胜在一句话搞定,少写一行代码。到底哪种方式更适用,需要以后使用中再感受。
三. 体会:
这部分内容看起来比较碎,但是实际上核心就讲了一个,即数据的选取。对待这种非常零散的东西,最好的方法就是自己归纳总结,然后对应薄弱的地方,练习练习再练习。
将散碎的东西穿成串虽然略繁琐,但是慢慢捋顺的过程也是跳出这些,逐渐给自己建立一个框架的过程,不然,脑袋里越糊越多就越想放弃。不识庐山真面目,只缘身在此山中,大概有点这个意思。
从上往下看就会发现,俯视图往往藏奥义。
Python笔记系列(不只是笔记):