0. 核心基础:(速记-解释-白话)
-
Series:一维;两个“属性”;操作元素
① 一维数组结构(看做表格中的一列)
②由 index 和 对应的值 构成 (对应行index的一列)
③元素级别的操作 (操作这一列之内的元素) -
DataFrame :二维;三个“属性”;操作行/列
①二维数据结构(看做横向/列变化方向堆叠起来的多个Series)
②由 index、列名 和 它们对应的值 组成(列名对应多列Series)
③操作级别是行/列(操作多行或者多列) -
共同点:向量和广播机制
将一个Numpy数组的操作扩散到整个Pandas对象。
1. Series
-
产生方式(列表/字典=输入):
注意:可以使用默认index也可以自定义
-
操作方法(选择+函数=输出):
Series的产生:
print('通过数组来生成序列Series')
s_array = np.random.randn(5)
s = pd.Series(s_array, index = ['a','b','c','d','e'])
s
print('通过字典来生成序列Series')
s_dict= {'a':11,'b':1000,'c':123213,'d':-1000}
s = pd.Series(s_dict)
s
Series的操作:
s = pd.Series(np.random.randn(5), index = ['a','b','c','d','e'])
s
# 可以通过index来查看序列Series中的元素
print('查看序列中index为a的元素:',s['a'])
print('查看序列中index为a,c,e的元素:\n',s[['a','c','e']])
# 基于index 可以修改序列s中的元素
print('原序列:\n',s)
s['a'] = 1000000000
print('修改后的序列:\n',s)
s = pd.Series(np.random.randn(5), index = ['a','b','c','d','e'])
print('原序列:\n',s)
# 大多数numpy的函数可以直接应用于 序列 Series
print('序列相加:\n',s+s)
print('序列每个元素求指数:\n',np.exp(s))
s = pd.Series(np.random.randint(1,5,5), index = ['a','b','c','d','e'])
print('查看序列s的index:',s.index)
print('查看序列的值:',s.values)
print('序列s的一阶差分:\n',s.diff())
ss = pd.Series(np.random.randint(1,3,100))
print(ss[:10])
print('查看序列的唯一取值:',ss.unique())
2. DataFrame
-
产生方式(列表/字典=输入)
-
操作方法(选择+函数=输出)
DataFrame的产生:
print('由列表来产生数据框')
data = [['Ohio', 'Ohio', 'Ohio', 'Nevada', 'Nevada'],
[2000, 2001, 2002, 2001, 2002],
[1.5, 1.7, 3.6, 2.4, 2.9]]
frame = pd.DataFrame(data,index=['state','year','pop']).T
frame
print('由字典来产生数据框')
data = {'state': ['Ohio', 'Ohio', 'Ohio', 'Nevada', 'Nevada'],
'year': [2000, 2001, 2002, 2001, 2002],
'pop': [1.5, 1.7, 3.6, 2.4, 2.9]}
frame = pd.DataFrame(data)
frame
DataFrame的操作:
相对Series这里的操作会更多更复杂一些,单独分块小结
注意到,直接传入多维数组之后,可以通过参数index添加索引(默认按行),并且使用功转置将一行行的数组转为一列列的形式!
①基本性质:
data = pd.DataFrame(np.random.randint(1,100,(10,4)),columns=['x1','x2','x3','x4'])
print('首先查看数据框的形状',data.shape)
print('查看数据框的头部:')
print(data.head())
print('---------------------')
print('查看数据框的尾部:')
print(data.tail())
print('---------------------')
print('查看数据框的索引index')
print(data.index)
print('查看数据框的列名')
print(data.columns)
print('---------------------')
print('查看数据框的值,其格式为数组array')
print(data.values)
print('---------------------')
print('查看数据框的基础描述性统计')
print(data.describe())
# 在原有的数据框中新加入一列
data['新列'] = ['HAHA'] * len(data)
data
# 数据框的转置
data.T
②选择数据
可以参考:
https://zhuanlan.zhihu.com/p/58961194
写的有点多,以后有时间再精简,好事一个核心框架的形式!