《python数据分析》5.1
这几天事情太多了,好几个项目催着要功能,还有测试版本的问题修复,一个头不知道几个大。想了想列了一下需要做哪些事情,排排优先级,先把优先级高的简单的
先处理了,每天写一个清单,处理完一件就打个勾,打勾的感觉挺爽的,推荐一本书《清单革命》,有空可以大致翻一下。
5.1 pandas数据结构
两种主要的数据结构:Series和DataFrame
Series 是一维的,类似字典,它的索引就是它的键值,可以将字典输入创建一个Series
sdata = {'Ohio':3,'Texas':4,'Oreng':5,'Utah':6} sdata Out[3]: {'Ohio': 3, 'Texas': 4, 'Oreng': 5, 'Utah': 6} ob = pd.Series(sdata) ob Out[5]: Ohio 3 Texas 4 Oreng 5 Utah 6 dtype: int64
可以看到,键值成为了左边的索引值
当然也可以直接用数组输入生成Series,那索引值默认是0,1,2...;索引值可以在生成时赋值的
ob = pd.Series([4,-1,3,5],index=['a','b','c','d']) ob Out[31]: a 4 b -1 c 3 d 5 dtype: int64
可以采取像字典方式,取键值来取所对应的值。
当用列表输入生成Series时,index的长度必须和列表长度一样;用字典输入生成Series时,index长度可以和字典不一样长
5.1.2 DataFrame
DataFrame是二维的,当然里面可以嵌套,看上去是多维的。
由长度相同的列组成,就像是Excel表格一样,每一列代表一类数据
可以看成是Series的数组
data = {'state':['Ohio','Ohio','Nevada'],'year':[2001,2001,2002],'pop':[1.5,1.7,3.6]} frame = pd.DataFrame(data) frame Out[19]: state year pop 0 Ohio 2001 1.5 1 Ohio 2001 1.7 2 Nevada 2002 3.6
可以看到左边是有索引的。
取单元值是用loc函数
frame.loc[1] Out[43]: state Ohio year 2001 pop 1.7 Name: 1, dtype: object
选取列
frame['state'] Out[44]: 0 Ohio 1 Ohio 2 Nevada Name: state, dtype: object
DataFrame 可以用values属性把数据以二维ndarray形式返回
frame.values Out[45]: array([['Ohio', 2001, 1.5], ['Ohio', 2001, 1.7], ['Nevada', 2002, 3.6]], dtype=object)