【利用python进行数据分析】chapter4:pandas

Series

一种类似于一维数组的对象,由数据和索引组成,当不指定索引时,默认的索引是从0到n-1

import pandas as pd
from pandas
obj = Series([1,2,3,4])
#obj
# 0    1
# 1    2
# 2    3
# 3    4
# dtype: int64
#查询这个series的值
obj.values
# array([1, 2, 3, 4], dtype=int64)
obj.index
# RangeIndex(start=0, stop=4, step=1) [0,1,2,3]
#创建指定索引的series
obj2 = Series([1,2,3,4],index=([10,23,14,45]))
#根据索引选择某个特定元素
obj2[10]  #输出为1
# 可以判断这个series是否存在某个索引
10 in obj2  #true
1 in obj2  #false
# 由于series和dict很相似,所以可以直接转化dict为series
dict = {
     'a':100,'b':200,'c':300}
obj3 = Series(dict)
#判断数据是否为空
obj3.isnull()

series还有自动对齐索引的功能,就是说对于两个series,会根据相同的索引对数据进行合并。这样可以进行不同series之间的操作。

DataFrame

可以看作是excel表格感觉,不同的列代表不同的属性,每一行表示一个实体(用一个自动的索引标记)

#创建的时候可以看作是一个词典,每个key是每一列的属性名,每一个value是等长的数组,数组的元素就是每一行这个属性对应的值。
data = {
     'state':['a','b','c'],'year':[1,2,3], 'pop':[1.1,2.2,3.3]}
df = DataFrame(data)
#   state  year  pop
# 0     a     1  1.1
# 1     b     2  2.2
# 2     c     3  3.3
#按照指定列的排列方式创建
df = DataFrame(data,columns=['state','pop','year'])
#指定索引创建
df = DataFrame(data,columns=['state','pop','year'],index=['one','two','three'])
#获取某一列 注意什么时候加引号,什么时候不加
df['state']
df.state
#获取某个索引对应的数据
df.ix['one']  
# 添加某一列
df['hh'] = 'new col'  #hh是新的列的名字 这个赋值的长度必须与现有的df的长度相匹配
#嵌套的方式创建df, 内层{}中的key就是索引值
data2 = {
     'a':{
     2001:2.4,2002:2.5},'b':{
     2001:3,2002:4}}
df2 = DataFrame(data2)
df2
#         a  b
# 2001  2.4  3
# 2002  2.5  4
# 重新索引功能
obj4 = obj2.reindex([10,23,18,25])
#删除指定值
#删除某个索引及其对应的值
obj4.drop(10)  #obj4.drop([10,23])
#删除某一列对应的值
df2.drop('two',axis = 1)  #删除two这一列 1表示按列删除

索引选取+排序

data = DataFrame(np.arange(16).reshape((4,4)),index = ['a','b','c','d'],columns = ['one','two','three','four'])
obj = Series(np.arange(4),index = ['a','b','c','d'])
#选取obj的索引  选取切片的时候是闭区间
obj['a']  #obj['b':'c']
#选取data的列  
data['two']
#选取data的某一个索引
data.ix[2]  #第三行
data.ix[:'b','two']  #a b(前两行)的two这一列

#对series对象进行排序
obj.sort_index()   #按索引进行排序
#对dataframe进行排序
data.sort_index()
data.sort_index(axis = 1)  #按照列名进行排序
#按照某一列或多个列进行排序
data.sort_index(by='one')  #按照one这一列进行排序
data.sort_index*by = ['one','two']
#带有重复值的索引
#判断某个索引是否唯一
obj.index.is_unique

#聚集函数
data.sum()  #计算每一列的和(按照行方向)
data.sum(axis=1)   #计算每一行的和(按照列方向)
#填充空值
data.fillna(0)
data.fillna({
     1:0.5,3:0.1})   #不同列填充不同的值

你可能感兴趣的:(python数据分析,python)