1. 什么是pandas?
pandas是处理结构化(表格数据)最常用的工具,是python数据分析和数据处理的最成熟的库。pandas最早是为了处理金融数据而开发的,开放到社区至今,已经广泛应用于各个领域中;pandas以numpy为基础,而pandas是其他应用的数据基础,如Scikit-learn等。
如果你想;
- 快速地进行数据的统计分析
- 像数据库一样做多数据之间的关联
- 快速地预处理数据(删除脏数据,空数据,数据转换,缺失值处理)
- 像Excel一样的做多维的数据透视,数据分组汇总统计
- 绘制统计图表
- 进行数据挖掘
- and so on
你需要掌握pandas!
pip install pandas
import pandas as pd
from pandas import Series, DataFrame
2. pandas数据结构
我们先来看看pandas的三大数据结构:Series、DataFrame和Index
2.1 Series
Series可以认为是一个一维数组, 但是和数组只有位置索引不同,Series可以有不同的索引。
import pandas as pd
import numpy as np
from pandas import Series, DataFrame
series = Series([12, 21, 31], index=['a', 'b', 'c'], dtype=np.int32, name="age")
# a 12
# b 21
# c 31
# Name: age, dtype: int32
从上可知,Series组成:
- 数据项
- 索引index, 默认为位置索引,即0到N-1
- 数据类型dtype,不指定pandas会自动判断
- 数据名称name
Series有哪些属性和操作
获取属性:数据项values 和索引index 名称name
# array([12, 21, 31]) series.values # Index(['a', 'b', 'c'], dtype='object') series.index # age series.name # dtype('int32') series.dtype
按照索引获取指定数据
series[0], series['b'] # 12 21
查询数据和运算
series[series > 20] # b 21 # c 31 # Name: age, dtype: int32
s2 = series * 2
# a 24
# b 42
# c 62
# Name: age, dtype: int32
s3 = np.log1p(series)
# a 2.564949
# b 3.091042
# c 3.465736
# Name: age, dtype: float64
```
总结下, Series是按索引组织有序有类型的一维数组。
2.2 DataFrame
DataFrame可以理解为一个或者多个Series组成的表格型的二维结构的数据。
data = {'state': ['Ohio', 'Ohio', 'Ohio', 'Nevada', 'Nevada', 'Nevada'],
'year': [2000, 2001, 2002, 2001, 2002, 2003],
'pop': [1.5, 1.7, 3.6, 2.4, 2.9, 3.2]}
frame = pd.DataFrame(data)
frame.info()
# <class 'pandas.core.frame.DataFrame'>
# RangeIndex: 6 entries, 0 to 5
# Data columns (total 3 columns):
# state 6 non-null object
# year 6 non-null int64
# pop 6 non-null float64
# dtypes: float64(1), int64(1), object(1)
# memory usage: 224.0+ bytes
可以通过info()函数清楚的了解DataFrame组成:索引RangeIndex、数据列Data columns和数据类型。有属性来方便获取相应的值。
# RangeIndex(start=0, stop=6, step=1)
frame.index
# Index(['state', 'year', 'pop'], dtype='object')
frame.columns
DataFrame的每一行和每一列都是Series, 可以按行和按列访问数据
frame['state']
# 0 Ohio
# 1 Ohio
# 2 Ohio
# 3 Nevada
# 4 Nevada
# 5 Nevada
# Name: state, dtype: object
frame.loc[0]
# state Ohio
# year 2000
# pop 1.5
# Name: 0, dtype: object
frame.loc[0][1]
# 2000
DataFrame是非常重要的结构,更多的操作我们在后续陆续分享。
2.3 Index
从Series和DataFrame中都可以看到Index的身影,可以说Series和DataFrame都是带索引的数据结构。
如果你对结构化数据库如Oracle、Mysql有了解化,索引是一个重要的高效访问的方式。对于Series和DataFrame来说同样也是。
Series和DataFrame的索引和数据库索引一样,是允许重复值的。
比如设置state列为索引
frame.set_index('state')
# year pop
# state
# Ohio 2000 1.5
# Ohio 2001 1.7
# Ohio 2002 3.6
# Nevada 2001 2.4
# Nevada 2002 2.9
# Nevada 2003 3.2
今天我们分享了关于pandas的基础结构:Series、DataFrame和Index,希望对你有帮助。