1.Series 一维,带标签数组
2.DataFrame 二维,Series容器series和dataframe的区别: series只有行索引没有列索引。
一,创建series类型的两种方式
1,第一种创建series方式
1)不指定索引
import pandas as pd
print(pd.Series([1,2,3,4]))
0 1
1 2
2 3
3 4
dtype: int64
2)指定索引
import pandas as pd
import numpy as np
import string
a = pd.Series(np.arange(5),index=list(string.ascii_uppercase[:5]))
print(a)
#------------output----------------
A 0
B 1
C 2
D 3
E 4
dtype: int32
2,第二种创建方式(根据字典创建)
import pandas as pd
import string
# 使用字典推导式创建一个字典
temp = {string.ascii_uppercase[i]:i for i in range(10)}
print(temp)
a = pd.Series(temp)
b = pd.Series(temp,index=list(string.ascii_uppercase[5:15]))
print(a)
print(b)
#------------output----------------
{'A': 0, 'B': 1, 'C': 2, 'D': 3, 'E': 4, 'F': 5, 'G': 6, 'H': 7, 'I': 8, 'J': 9}
A 0
B 1
C 2
D 3
E 4
F 5
G 6
H 7
I 8
J 9
dtype: int64
F 5.0
G 6.0
H 7.0
I 8.0
J 9.0
K NaN
L NaN
M NaN
N NaN
O NaN
dtype: float64
二,如何修改series的dtype
import pandas as pd
import string
dicts = {string.ascii_uppercase[i]:i for i in range(10)}
print(dicts)
temp = pd.Series(dicts).astype('float32')
print(temp)
#------------output----------------
{'A': 0, 'B': 1, 'C': 2, 'D': 3, 'E': 4, 'F': 5, 'G': 6, 'H': 7, 'I': 8, 'J': 9}
A 0.0
B 1.0
C 2.0
D 3.0
E 4.0
F 5.0
G 6.0
H 7.0
I 8.0
J 9.0
dtype: float32
三,series的切片和索引
import pandas as pd
import string
dicts = { string.ascii_uppercase[i]:i for i in range (10) }
temp = pd.Series(dicts)
# 切片,传入start、end、步长即可
print(temp[2:10:2])
# 传入索引
print(temp[1])
# 根据索引取出多值
print(temp[[1,2,3,5]])
# 根据布尔值进行判断取出数值
print(temp[temp>4])
# 根据自定义索引取值
print(temp['F'])
# 根据自定义索引取出多值
print(temp[['A','E']])
四,servies的属性(index、values)
import pandas as pd
import string
dicts = { string.ascii_uppercase[i]:i for i in range (10) }
temp = pd.Series(dicts)
# Series.index属性是可以迭代的
# for i in temp.index:
# print(i,len(temp.index))
# Series.values属性是可以迭代的
# for j in temp.values:
# print(j,len(temp.values))
# Series.index和Series.values可以转换为list
a = list(temp.values[:2])
print(temp.index)
print(temp.values,type(temp.values))
print(a,type(a))
Index(['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J'], dtype='object')
[0 1 2 3 4 5 6 7 8 9] <class 'numpy.ndarray'>
[0, 1] <class 'list'>
# Series对象本质上由两个数组构成
# 一个数组构成对象的键(index,索引),一个数组构成对象的值(values),键->值
# ndarray有很多方法都可以运用于series类型,比如argmax,clip
# series具有where方法,但结果和ndarray不一样
五,根据series的行索引和values排序
import pandas as pd
import string
import random
dicts = { string.ascii_uppercase[i]:random.randint(1,10) for i in range (10) }
temp = pd.Series(dicts)
temp = temp.sort_index()
temp = temp.sort_values()
print(temp)