![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/40596111c266b6d27f9376d389fc24f2.png)
3.1 pandas数据结构:Series和DataFrame
3.1.1 创建Series数据
Series
数据结构类似于一维数组,但它是由一组数据(各种Numpy
数据类型)和一组对应的索引组成。通过一组列表数据即可产生最简单的Series
数据。
Series
与普通的一维数组相比,其具有索引对象,可通过索引来获取Series的单个或一组值。
Series
数据:索引在左边,值在右边。
- 如果没有指定一组数据作为索引的话,
Series
数据会以0
到N-1
(N为数据的长度)作为索引,也可以通过指定索引的方法来创建Series
数据。
Series
有values
和index
属性,可返还值数据的数组形式和索引对象。
Series
运算都会保留索引和值之间的链接。
Series
数据中的索引和值一一对应,类似于Python
字典数据,所以也可以通过字典数据来创建Series
。
- 由于字典结构是无序的,因此这里返回的
Series
也是无序的,这里依旧可以通过index
指定索引的排序顺序。
Series
对象和索引都有name
属性,这样我们就可以给Series
定义名称,让Series
更具可读性。
from pandas import Series,DataFrame
import pandas as pd
obj = Series([1,-2,3,-4])
obj
0 1
1 -2
2 3
3 -4
dtype: int64
obj2 = Series([1,-2,3,-4],index=['a','b','c','d'])
obj2
a 1
b -2
c 3
d -4
dtype: int64
obj2.values
array([ 1, -2, 3, -4])
obj2.index
Index(['a', 'b', 'c', 'd'], dtype='object')
obj2['b']
-2
obj2['c'] = 23
obj2[['c','d']]
c 23
d -4
dtype: int64
obj2
a 1
b -2
c 23
d -4
dtype: int64
obj2[obj2<0]
b -2
d -4
dtype: int64
obj2*2
a 2
b -4
c 46
d -8
dtype: int64
import numpy as np
np.abs(obj2)
a 1
b 2
c 23
d 4
dtype: int64
data = {
'张三':92,
'李四':78,
'王五':68,
'小明':82
}
obj3 = Series(data)
obj3
张三 92
李四 78
王五 68
小明 82
dtype: int64
data = [92,78,68,82]
names = ['张三','李四','王五','小明']
obj4 = Series(data,index=names)
obj4.name = 'math'
obj4.index.name = 'students'
obj4
students
张三 92
李四 78
王五 68
小明 82
Name: math, dtype: int64
3.1.2 创建DataFrame数据
DataFrame
为表格型数据。 创建DataFrame
数据的办法有很多,最常用是传入由数组、列表或元组组成的字典。
DataFrame
数据有行索引和列索引,行索引类似于Excel
表格中每行的编号,列索引类似于Excel
表格的列名。
- 由于字典是无序的,因此可以通过
columns
指定列索引的排序顺序。
- 当没有指定行索引的情况下,会使用
0
到N-1
作为行索引,这里也可以使用其他数据作为行索引。
- 使用嵌套字典的数据也可以创建
DataFrame
数据。
- 创建
DataFrame
数据可输入的数据类型。
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/73a0c7777f67622d9fcb93a7705bd98f.png)
- 可以设置索引名称和表格名称,通过设置
DataFrame
的index
和columns
的name
属性,可以将这些信息显示出来。
- 通过
values
属性可以将DataFrame
数据转换为二维数组。
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/0038cdd5ee4cb58e3c26b2157a6ee277.png)