这里是三岁,速学了pandas,怕自己不会用整理了一下资料,有问题的地方或者不对的希望大家多多指出,批评指正!!!
由于pandas的内容过多我们就把经常使用的进行解析,其他的我们后续逐步添加
pandas是基于NumPy开发和改进的,许多地方相通但是更加方便,使用更加简单。
虽然小编对传说中的“牛皮”库完全不了解[无奈],接下来会逐渐更新,感谢大家支持!
参考资料:pandas中文官网
那就开始吧~~~~~
pandas概况
pandas是核心数据分析支持库,传说中的分析数据离不开!
pandas分为一维数据和二维数据(多维数据)
- 一维数据:Series 带标签的一维同构数组
- 二维数据:DataFrame 带标签的二维异构表格
安装与使用
安装pandas 在cmd 里面使用pip install pandas
进行安装emmm我们顺便加上pip install Numpy
让‘父子’团聚,嘻嘻嘻
导入,模块(库)
import pandas as pd import numpy as np
Series
Series 是带标签的一维数组,可存储整数、浮点数、字符串、Python 对象等类型的数据。轴标签统称为索引。
s = pd.Series(data, index=index)
使用以上代码进行创建Series
index 是轴标签列表,data是数据
其中data
也是有脾气的有以下要求(支持以下数据类型)
- Python 字典
- 多维数组
- 标量值(单个的数值)
范例:
s = pd.Series(np.random.randn(5), index=['a', 'b', 'c', 'd', 'e']) print(s) print(s.index)
a -0.466190
b 0.097685
c 1.501163
d -0.051875
e -0.242873
dtype: float64
…………………………
Index([‘a’, ‘b’, ‘c’, ‘d’, ‘e’], dtype=‘object’)
以上例子为轴标签
进行指定的,接下来看看没有指定的:
s = pd.Series(np.random.randn(5)) print(s) print(s.index)
0 0.347845
1 -0.018464
2 0.647092
3 -0.456581
4 0.098459
dtype: float64
…………………………
RangeIndex(start=0, stop=5, step=1)
没有指定的话就会从0开始逐个对标。
话说对字典
的处理是怎么完成的?
让我们一起举个‘栗子’看看:
data = {'a': 0., 'b': 1., 'c': 2.} s = pd.Series(data) print(s) print(s.index)
a 0.0
b 1.0
c 2.0
type: float64
…………………………
Index([‘a’, ‘b’, ‘c’], dtype=‘object’)
让我们看看这个例子
data = {'a': 0., 'b': 1., 'c': 2.} s = pd.Series(data, index={'b', 'a', 'd', 'c'}) print(s) print(s.index)
d NaN
a 0.0
c 2.0
b 1.0
dtype: float64
………………………
Index([‘d’, ‘a’, ‘c’, ‘b’], dtype=‘object’)
在里面出现了一个特殊的值NaN
这个代表了数据的缺失
说完了字典那么标量值
呢?
data
是标量值时,必须提供索引。Series
按索引长度重复该标量值。
s = pd.Series(5., index=['a', 'b', 'c', 'd', 'e']) print(s) print(s.index)
a 5.0
b 5.0
c 5.0
d 5.0
e 5.0
dtype: float64
…………………………
Index([‘a’, ‘b’, ‘c’, ‘d’, ‘e’], dtype=‘object’)
DataFrame
DataFrame 是由多种类型的列构成的二维标签数据结构,类似于 Excel 、SQL 表,或 Series 对象构成的字典。DataFrame 是最常用的 Pandas 对象,与 Series 一样,DataFrame 支持多种类型的输入数据:
- 一维 ndarray、列表、字典、Series 字典
- 二维 numpy.ndarray
- 结构多维数组或记录多维数组
- Series
- DataFrame
还可以有选择地传递 index(行标签)和 columns(列标签)参数。传递了索引或列,就可以确保生成的 DataFrame 里包含索引或列。
举例看看用字典转换成DataFrame
d = {'one': pd.Series([1., 2., 3.], index=['a', 'b', 'c']), 'two': pd.Series([1., 2., 3., 4.], index=['a', 'b', 'c', 'd'])} df = pd.DataFrame(d) print(df) print(df.index) print(df.columns)
one two
a 1.0 1.0
b 2.0 2.0
c 3.0 3.0
d NaN 4.0
……………………
Index([‘a’, ‘b’, ‘c’, ‘d’], dtype=‘object’)
……………………
Index([‘one’, ‘two’], dtype=‘object’)
接下来看看定义了index
的数据
d = {'one': pd.Series([1., 2., 3.], index=['a', 'b', 'c']), 'two': pd.Series([1., 2., 3., 4.], index=['a', 'b', 'c', 'd'])} df = pd.DataFrame(d, index=['d', 'b', 'a']) print(df) print(df.index) print(df.columns)
one two
d NaN 4.0
b 2.0 2.0
a 1.0 1.0
……………………
Index([‘d’, ‘b’, ‘a’], dtype=‘object’)
……………………
Index([‘one’, ‘two’], dtype=‘object’)
仔细看的会发现没有定义的数据直接就删除了,丝毫没有情面
那么接下来看看columns
指定的情况
d = {'one': pd.Series([1., 2., 3.], index=['a', 'b', 'c']), 'two': pd.Series([1., 2., 3., 4.], index=['a', 'b', 'c', 'd'])} df = pd.DataFrame(d, columns=['two', 'three']) print(df) print(df.index) print(df.columns)
two three
a 1.0 NaN
b 2.0 NaN
c 3.0 NaN
d 4.0 NaN
……………………
Index([‘a’, ‘b’, ‘c’, ‘d’], dtype=‘object’)
……………………
Index([‘two’, ‘three’], dtype=‘object’)
又是见证奇迹的时刻没有定义的直接就删除了,新出现的直接NaN
,代码界的黑寡妇!
问题来了!
这里的数据都是字典里面的用Series
来表示的那么我们也没有什么办法用其他方法来表示呢?
让我们一起来看看
d = {'one': [1., 2., 3., 4.], 'two': [5., 6., 7., 8.]} df = pd.DataFrame(d) print(df) print(df.index) print(df.columns)
one two
0 1.0 5.0
1 2.0 6.0
2 3.0 7.0
3 4.0 8.0
……………………
RangeIndex(start=0, stop=4, step=1)
……………………
Index([‘one’, ‘two’], dtype=‘object’)
我们用字典嵌套列表也是可以的但是要注意,每一项要对齐,不能够有缺失不然就会报错
d = {'one': [1., 2., 3.], 'two': [5., 6., 7., 8.]} df = pd.DataFrame(d) print(df) print(df.index) print(df.columns)
raise ValueError(“arrays must all be same length”)
ValueError: arrays must all be same length
同理我们也可以使用index=[……]
对index进行定义。此处就不演示了。
接下去使用列表嵌套字典进行处理
d = [{'a': 1, 'b': 2}, {'a': 5, 'b': 10, 'c': 20}] df = pd.DataFrame(d) print(df) print(df.index) print(df.columns)
a b c
0 1 2 NaN
1 5 10 20.0
……………………
RangeIndex(start=0, stop=2, step=1)
……………………
Index([‘a’, ‘b’, ‘c’], dtype=‘object’)
一样通过设置index
来修改index的值
pd.DataFrame(d, index=['first', 'second'])
a b c
first 1 2 NaN
second 5 10 20.0
此处还有许多类型例如元组和字典的嵌套,字典和字典的嵌套,多维数组等等然后可以生成二维,三维,四维……多维的数据,里面需要认真理解,多加练习。
那么pandas的数据结构Series
和DataFrame
就先告一段落啦!
记得关注三岁哟!