1.Pandas的引入
在有Numpy和Matplotlib的情况下,在很多人看来,Numpy可以很好的处理数据,无论是数组还是
求取协方差,方差,均值等等,都可以解决;而Matplotlib则可以将这些经过Numpy处理后的数据
进行绘制成图像,这看起来已经解决了数据分析的一切问题.
但此时,数据中的字符串,时间序列也可以通过这种方式进行处理吗?
经过验证,是不行的.所以Pandas产生了,其是建立在Numpy的基础上,用来处理字符串和时间
序列.Pandas的功能十分强大.
Pandas是一个python数据包,直接通过import引入即可使用.
2.Pandas中的数据结构
在pandas中有两类非常重要的数据结构,即序列Series和数据框DataFrame。
Series类似于numpy中的一维数组,除了通吃一维数组可用的函数或方法,而且其可通过索引标签的方式获取数据,还具有索引的自动对齐功能;
DataFrame类似于numpy中的二维数组,同样可以通用numpy数组的函数和方法,而且还具有其他灵活应用.
2.1 Series简单创建
pandas.Series参数
第一个是数组;
第二个参数是索引,是一个列表形式list();
第三个是数据类型dtype;
第四个是name;剩下的后面用时才介绍.
示例一
import string
import pandas as pd
import numpy as np
# Series创建
array = pd.Series(np.arange(6), index=list(string.ascii_letters[:6]))
print("打印\n", array)
print("array类型:\t", type(array))
输出结果:
打印
a 0
b 1
c 2
d 3
e 4
f 5
dtype: int32
array类型: <class 'pandas.core.series.Series'>
示例二,改变索引值
import string
import pandas as pd
# 创建一个字典
dic = {
string.ascii_uppercase[i]: i for i in range(10)}
print("字典如下:\n", dic)
# Series创建
a = pd.Series(dic)
print("Series创建后\n", a)
# 改变索引值
b = pd.Series(a, index=list(string.ascii_uppercase[3:12]))
print("改变索引值后\n", b)
输出结果
字典如下:
{
'A': 0, 'B': 1, 'C': 2, 'D': 3, 'E': 4, 'F': 5, 'G': 6, 'H': 7, 'I': 8, 'J': 9}
Series创建后
A 0
B 1
C 2
D 3
E 4
F 5
G 6
H 7
I 8
J 9
dtype: int64
改变索引值后
D 3.0
E 4.0
F 5.0
G 6.0
H 7.0
I 8.0
J 9.0
K NaN
L NaN
dtype: float64
这是一个给字典二次赋值索引的列子,可以发现改变索引后,如果索引和原来相同的则还是原
值,而不同的则为NAN,意味着无法找到;dtype也发生了改变,这是因为NAN是float64类型.
因此整个数值类型全部转换成了float64
2.2 Series切片和索引
这个和numpy是相同的.
import string
import pandas as pd
import numpy as np
# Series创建
array = pd.Series(np.arange(12)[2:], index=list(string.ascii_letters[:10]),)
print("打印\n", array)
print("指定位置的值\n", array[1::2])
print("索引为a,f的值\n", array[["a", "f"]])
# 查不到值的情况下返回NAN
print("索引为d,q的值\n", array[["d", "q"]])
print("第1,3位置的值\n", array[[1, 3]])
输出结果
D:\Python\Anaconda\python.exe D:/Python/python/Project3/pandas/pandas01.py
打印
a 2
b 3
c 4
d 5
e 6
f 7
g 8
h 9
i 10
j 11
dtype: int32
指定位置的值
b 3
d 5
f 7
h 9
j 11
dtype: int32
索引为a,f的值
a 2
f 7
dtype: int32
索引为d,q的值
d 5.0
q NaN
dtype: float64
值是1,