2-Pandas之Series和DataFrame区别
一、Pandas
pandas的数据元素包括以下几种类型:
类型 | 说明 |
object | 字符串或混合类型 |
int | 整型 |
float | 浮点型 |
datetime | 时间类型 |
bool | 布尔型 |
二、Series与DataFrame区别:
- Series是带索引的一维数组
- Series对象的两个重要属性是:index(索引)和value(数据值)
- DataFrame的任意一行或者一列就是一个Series对象
三、创建Series对象:pd.Series(data,index=index)
其中data可以是很多类型:
- 一个列表---------->pd.Series([1,2,3])
- 一个ndarray------->pd.Series(np.random.randint(2),index=['a','b'])
- 一个python字典---->pd.Series({"a":2,"b":0})
- 一个标量值-------->pd.Series(3,index=[1,2,3])
Series在算数运算中会自动对齐不同索引的数据:
例如:
1 >>> s=pd.Series([1,2,3],index=['a','b','c']) 2 >>> a=pd.Series([4,1,0],index=['b','a','c']) 3 >>> s+a 4 a 2 5 b 6 6 c 3
unique():返回结果是一个数组,包含Series去重后的元素
value_counts():查看每一个唯一元素的频数
四、创建DataFrame对象:pd.DataFrame(data,index,columns)
与Series不同的是,DataFrame包括索引index和表头columns:
其中data可以是很多类型:
- 包含列表、字典或者Series的字典
- 二维数组
- 一个Series对象
- 另一个DataFrame对象
例如:
1、从字典创建:
1 >>> d = {'one':pd.Series([1,2,3],index=['a','b','c']), 'two':pd.Series([2,3,4],index=['a','b','d'])} 2 >>> pd.DataFrame(d) 3 one two 4 a 1.0 2.0 5 b 2.0 3.0 6 c 3.0 NaN 7 d NaN 4.0
2、从字典创建
1 >>> pd.DataFrame(d,index=['a','b'],columns=['w1','w2']) 2 w1 w2 3 a NaN NaN 4 b NaN NaN 5 >>> pd.DataFrame(d,index=['a','b'],columns=['one','two']) 6 one two 7 a 1 2 8 b 2 3
五、DataFrame的数据筛选
与Series类似,可通过布尔表达式按照一定条件进行筛选。不同于Series的是,DataFrame布尔筛选返回的是满足筛选条件的样本的所有列的数据(即:一返回就是一条记录)。
上例子!
1 >>> d = {'one':pd.Series([1,2,3],index=['a','b','c']),'two':pd.Series([2,3,4],index=['a','b','d'])} 2 >>> pd.DataFrame(d) 3 >>> d[d['one']<3] 4 one two 5 a 1.0 2.0 6 b 2.0 3.0
六、DataFrame的删除和添加一列
添加一列:(1)像字典一样通过赋值的方式执行
1 >>> d['three']=d['one']+d['two']
(2)使用insert()在指定位置插入一列,例如在位置1插入新的一列'new',值为0
>>> d.insert(1,'new',np.zeros((4,1))) >>> d one new two three a 1.0 0.0 2.0 3.0 b 2.0 0.0 3.0 5.0 c 3.0 0.0 NaN NaN d NaN 0.0 4.0 NaN
删除一列:像字典一样------>使用pop()或者del(),pop()可以在删除列的基础之上将删除的列赋值给一个新的变量
1 >>> del d['three'] 2 >>> d 3 one new two 4 a 1.0 0.0 2.0 5 b 2.0 0.0 3.0 6 c 3.0 0.0 NaN 7 d NaN 0.0 4.0 8 >>> new = d.pop('new') 9 >>> d 10 one two 11 a 1.0 2.0 12 b 2.0 3.0 13 c 3.0 NaN 14 d NaN 4.0 15 >>> new 16 a 0.0 17 b 0.0 18 c 0.0 19 d 0.0 20 Name: new, dtype: float64
七、DataFrame修改索引名:使用rename()方法
1 >>> d 2 one two 3 a 1.0 2.0 4 b 2.0 3.0 5 c 3.0 NaN 6 d NaN 4.0 7 >>> i = {'a':'A','b':'B'} 8 >>> d.rename(index=i) 9 one two 10 A 1.0 2.0 11 B 2.0 3.0 12 c 3.0 NaN 13 d NaN 4.0