开发者学堂课程【高校精品课-华东师范大学 - Python 数据科学基础与实践:Pandas 基础 1】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/1067/detail/15379
Pandas 基础 1
内容介绍
一、前言
二、pandas 的数据结构
三、pandas 的主要功能
一、前言
各位同学好,接下来继续来学习文本挖掘课程第二部分,Phthon数据科学包的有关内容,这次学习的是在数据科学里面用的最多的pandas包的使用,然后来看看pandas包的内容,因为给大家准备了八节内容,这些内容不会全部都讲解的,因为时间原因讲解其中一些重要的内容,但是同学们还是要把整个内容全部看一遍。
二、pandas 的数据结构
首先先看第一节pandas的基础,pandas的基础里面总共三个内容,然后第一个内容是pandas的基本数据结构,pandas的基本数据结构主要是有两种,一种叫serious就是系列,另一种是数据框。这个内容从下面自己去学习,但是在学习过程当中一定要注意这个pandas的数据结构,无论是 serious 还是数据框最大的特色就是索引,它与 pandas 的列表或者刚学过的numpy 的ady相比,pandas里面最强大的就是它的数据结构里面有索引和index x,有了它们以后就增加了很多强大的功能,大家在学习过程当中一定要体会这个index x的作用和价值。
三、pandas 的主要功能
那么下面来学第二个内容就是pandas的一些主要功能,那么来看pandas的主要功能介绍一些常用的,那么第一个功能是来学习一下pandas 里面的重新索引,那么它是在创建object的时候遵照一个新的 index ,它是以设施在创建 object 的时候遵照一个新的index ,所以看下面的例子,那么这也是构建一个 series ,然后从一个列表里面构建,然后指明了它的索引,然后对应位置来看一下,那么这左边这一列就是它的索引,它们会对应每一个元素。
In [1]:import pandas as pd
In [2]:obj =pd.Series([4.5, 7.2, -5.3, 3.6], index-['d', 'b', 'a', ’c'])obj
Out[2]:dba
-5.3
c 3.6
dtype:float64
在series上调用reindex能更改index,如果没有对应index就会引入缺失数据,然后指定索引是abc,然后看一下 obj ,对它进行重新索引,然后指定重新索引的是 abcde ,紧接着执行一下来看一下结果,那么a 原来是负5.3 ,那还是负5.3,b是7.2,那这个是调整一下索引的排序,然后原来里面没有d,那么现在又要一个顺应的 d ,但是它里面并没有值,所以他会引入一个缺失数据,换句话来说也就是重新建索引,那么它会看原来的索引,原来有的话还保留,重新调整一下顺序,那么如果没有就引入空值。
In[3]:obj2 = obj.reindex(['a', 6', c', , e])
obj2
Out[3]: a -5.3
b 7.2
C 3.6
D 4.5
e NaN
dtype:float64
在处理时间序列这样的数据时,可能需要在reindexing的时候需要修改值。method选项能做到这一点,比如设定method为ffil,那么来看一下下面一个例子,首先构建一个series obj 3,然后它的值是Pro purple,yellow,然后索引直接的0、2、4,那么运行一下。这个series最左边的这一列是它的索引。
In [4]: obj3 pd.Series(['bule’,'purple', ’yellow'], index=[0, 2, 4])
obj3
Out[4]:0 bule
2 purple
4 yellow
dtype: object
然后下面来重建索引,重建索引给定的值为 range(6),
然后使用了 method='ffill',它代表着向前填充,然后执行一下看一下结果,本来是0、2、4就是blue,purple,yellow,那现在是0~5了,那么1的索引没有值,如果不用 mthod 它就默认空,那现在用到一个 mthod 的方法向前填充,那就用它前面一个值来填充,所以三和五都是一样的。
这也就是在处理一些数据的时候,在reindexing的时候需要修改值,method选项能做到这一点。
In [5]: obj3.reindex(range(6), method='ffill') #ffill 向前填充
Out [5]:0 bule
1 bule
2 purple
345 purple
yellow
yellow
dtype:object
对工DataFrame,reindex能修改row index,或column index。数据框是二维的行的索引和列索引,然后下面看看实例,那么首先定义一个数据框,然后它是(np.arange(9),它就代表着0-8一共九个数据,并且reshape(3, 3),变成3/3三行三列的数据,然后指定到index和 columns ,index就是在行上面, columns在列上。然后来看一下结果,那么行上面的这个名字是acd 的索引,列上面就是指定的名字,index的名字就相当于是列的索引。
In [6]: import numpy as np
In [7]:frame = pd.DataFrame(hp.arange(9).reshape(3, 3),
index=['a, c', d'],
columns=['Ohio', 'Texas', 'California'])
In [8]: frame
Out [8]:
Ohio Texas California
a 0 1 2
c 3 4 5
d 6 7 8
然后来改变行索引,首先使用数据框xx点击 reindex ,然后给它指定几个索引的值,紧接着执行一下看效果,acd原来是有的还保留,那么b原来是没有这个索引所以它就需要用空值来进行填充了。
In [9]: frame2 = frame.reindex([C'a', 'b', 'c', d'])frame2
Out [9]:
Ohio Texas California
a 0.0 1.0 2.0
b NaN NaN NaN
C 3.0 4.0 5.0
d 6.0 7.0 8.0
那接下来在改变列的索引,然后指定的一个列表,它里面还有几个地址,然后frame.reindex(columns=states),然后执行一下看一下结果。原来有的还保留,然后如果说新的在原来里面没有的需要使用空值来填充。
In[10]:states ['Texas',’Utah', 'California'] In [11]:frame.reindex(columns=states)
Out[11]:
Texas Utah California
a 1 NaN 2
C 4 NaN 5
d 7 NaN 8
如果说大家要详细了解,通过帮助来获得reindex的一些功能,怎么去查它的参数,今天可以给大家演示一下,一种办法可以在reindex 函数光标在它的框里面,大家可以看到有它里面有很多参数。
另外一种办法是查询帮助,然后把这个copy一下,后面加个问号,然后就可以获取帮助,来看看这个帮助,由于很多不可能什么都记住了,什么都记住也不是一个好办法,在脑子里面需要有一个框架和逻辑,然后用的时候可以去查一下,那么要求去记也不可能的,然后用的时候再去查一下就可以了,然后还可以使用那些la c LOGO更简洁的一个v NEX的方法。
那么看一下数据框点LOGO,然后这个里面一个列表,列表是指定的几个索引,然后后面是在跟一个 states ,这个相当于是找一个行,然后 states 是列,紧接着运行看一下结果,找的是a,b,c,d这几行,这LOGO一般是定位的,那么可以指定在逗号的左边是行,逗号的右边是列。
In [13]: frame.loc[['al, 'b', 'c', 'd'], states]
D:Anaconda3\lib\site-packages pandas core indexing.py:1418: FuturelWarning:
Passing list-likes to .loc or [] with any missing label will raise
KeyError in the future, you can use .reindex() as an alternative.
See the documentation here:
https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#deprecate-loc-reindex-listlike
return self._getitem_tuple(key)
Out[13]:
Texas Utah California
a 1.0 NaN 2.0
b NaN NaN NaN
C 4.0 NaN 5.0
d 7.0 NaN 8.0