Pandas系列-DataFrame和Series数据结构
原创
©著作权归作者所有:来自51CTO博客作者peishuai1987的原创作品,请联系作者获取转载授权,否则将追究法律责任
- Series
- DataFrame
- 从DataFrame中查询出Series
import pandas as pd
import numpy as np
1. Series
Series是一种类似于一维数组的对象,它由一组数据(不同数据类型)以及一组与之相关的数据标签(即索引)组成。
1.1 仅有数据列表即可产生最简单的Series
s1 = pd.Series([1,'a',5.2,7])
0 1
1 a
2 5.2
3 7
dtype: object
RangeIndex(start=0, stop=4, step=1)
array([1, 'a', 5.2, 7], dtype=object)
1.2 创建一个具有标签索引的Series
s2 = pd.Series([1, 'a', 5.2, 7], index=['d','b','a','c'])
d 1
b a
a 5.2
c 7
dtype: object
Index(['d', 'b', 'a', 'c'], dtype='object')
1.3 使用Python字典创建Series
sdata={'Ohio':35000,'Texas':72000,'Oregon':16000,'Utah':5000}
Ohio 35000
Texas 72000
Oregon 16000
Utah 5000
dtype: int64
1.4 根据标签索引查询数据
类似Python的字典dict
d 1
b a
a 5.2
c 7
dtype: object
pandas.core.series.Series
2. DataFrame
DataFrame是一个表格型的数据结构
- 每列可以是不同的值类型(数值、字符串、布尔值等)
- 既有行索引index,也有列索引columns
- 可以被看做由Series组成的字典
创建dataframe最常用的方法,见02节读取纯文本文件、excel、mysql数据库
2.1 根据多个字典序列创建dataframe
data={
'state':['Ohio','Ohio','Ohio','Nevada','Nevada'],
'year':[2000,2001,2002,2001,2002],
'pop':[1.5,1.7,3.6,2.4,2.9]
}
df = pd.DataFrame(data)
| state
| year
| pop
|
0
| Ohio
| 2000
| 1.5
|
1
| Ohio
| 2001
| 1.7
|
2
| Ohio
| 2002
| 3.6
|
3
| Nevada
| 2001
| 2.4
|
4
| Nevada
| 2002
| 2.9
|
state object
year int64
pop float64
dtype: object
Index(['state', 'year', 'pop'], dtype='object')
RangeIndex(start=0, stop=5, step=1)
3. 从DataFrame中查询出Series
- 如果只查询一行、一列,返回的是pd.Series
- 如果查询多行、多列,返回的是pd.DataFrame
| state
| year
| pop
|
0
| Ohio
| 2000
| 1.5
|
1
| Ohio
| 2001
| 1.7
|
2
| Ohio
| 2002
| 3.6
|
3
| Nevada
| 2001
| 2.4
|
4
| Nevada
| 2002
| 2.9
|
3.1 查询一列,结果是一个pd.Series
0 2000
1 2001
2 2002
3 2001
4 2002
Name: year, dtype: int64
pandas.core.series.Series
3.2 查询多列,结果是一个pd.DataFrame
| year
| pop
|
0
| 2000
| 1.5
|
1
| 2001
| 1.7
|
2
| 2002
| 3.6
|
3
| 2001
| 2.4
|
4
| 2002
| 2.9
|
type(df[['year', 'pop']])
pandas.core.frame.DataFrame
3.3 查询一行,结果是一个pd.Series
state Ohio
year 2001
pop 1.7
Name: 1, dtype: object
pandas.core.series.Series
3.4 查询多行,结果是一个pd.DataFrame
| state
| year
| pop
|
1
| Ohio
| 2001
| 1.7
|
2
| Ohio
| 2002
| 3.6
|
3
| Nevada
| 2001
| 2.4
|
pandas.core.frame.DataFrame