何为pandas
pandas在数据分析上广泛应用。我在看资料上,发现甚至有人评价pandas说:如果没有pandas,那么数据分析应该还是R语言的天下。至于是不是有这么厉害,我作为小白也不好评价。如果你也不知道,那么就往下看吧!
值得注意的是,pandas很多事在numpy基础上构建的,很多函数pandas和numpy是通用的。
python之numpy入门(详细)
pandas入门
初始化
首先我们了解一下pandas的结构,它以数据表为基本数据类型,有以下三种表:
Series: 一维数据,类似于 python 中的基本数据的 list 或 NumPy 中的 1D array。Pandas 里最基本的数据结构
DataFrame: 二维数据,DataFrame 是 Series 的容器
Panel:三维数据。Panel 是 DataFrame 的容器
其中我们实际使用过程应是Dataframe使用的最多。
其实数据表与数组的区别就在于多了一个索引。具体如下:
- Series = 1darray + index
- DataFrame = 2darray + index + columns
- Panel = 3darray + index + columns + item
Series
创建 Series 只需用下面一行代码
pd.Series( x, index=idx )
其中 x 可以是
- 列表 (list)
- numpy 数组 (ndarray)
- 字典 (dict)
pd.date_range(‘20200817’,periods=7)
DataFrame
创建 DataFrame 只需用下面一行代码
pd.DataFrame( x, index=idx, columns=col )
其中 x 可以是
- 二维列表 (list)
- 二维 numpy 数组 (ndarray)
- 字典 (dict),其值是一维列表、numpy 数组或 Series
- 另外一个 DataFrame
另外还有一些方法,比如
df.head() #等价于df.head(5) ,查看前五行
df.tail(3) # 查看尾三行
df.describe() #查看 DataFrame 每列的统计数据。
Panel
Panel用的不多,据说在未来的版本中还会被废除。这里就不说了,有兴趣可自行了解。
索引与切片
普通检索
下面主要是DdataFrame的索引与切片。
简单总结就是,基于标签用at和loc,基于位置用iat和iloc
-
索引单元素:
基于标签的 at
基于位置的 iat -
切片 index 和 columns:
基于标签的 loc
基于位置的 iloc
还可使用. 切片单列,和使用[]来切片单列多列,单行与多行
import pandas as pd
symbol = ['BABA', 'JD', 'APPLE', 'MS', 'GS', 'WMT']
data = {
'行业': ['电商', '电商', '科技', '金融', '金融', '零售'],
'价格': [176.92, 25.95, 172.97, 41.79, 196.00, 99.55],
'交易量': [16175610, 27113291, 18913154, 10132145, 2626634, 8086946],
'雇员': [101550, 175336, 100000, 60348, 36600, 2200000]}
df = pd.DataFrame( data, index=symbol )
df.name='美股'
df.index.name = '代号'
df
行业 | 价格 | 交易量 | 雇员 | |
---|---|---|---|---|
代号 | ||||
BABA | 电商 | 176.92 | 16175610 | 101550 |
JD | 电商 | 25.95 | 27113291 | 175336 |
APPLE | 科技 | 172.97 | 18913154 | 100000 |
MS | 金融 | 41.79 | 10132145 | 60348 |
GS | 金融 | 196.00 | 2626634 | 36600 |
WMT | 零售 | 99.55 | 8086946 | 2200000 |
df.at['JD','交易量'