近期想学习下数据分析,里边有用到pandas库,在书上网上找了些知识点想把它写下来便于以后自己的温习与分享。
pandas库主要有Series和DataFrame两个数据结构
Series 是一个类数组的数据结构,有索引index 可以理解为序列
DataFrame 按列存储的数据结构,所有的数据都是按列存放的 每列都是Series序列的结构
下面是关于pandas基础用法的实现
#导入pandas库
import pandas as pd
#1.通过list构建Series
ser_obj = pd.Series( range(10,20) )
print(ser_obj)
#获取数据
print( 'values=',ser_obj.values )
#获取索引
print( 'index=',ser_obj.index ) #索引是一个生成器对象
#通过索引获取数据
print( ser_obj[0] )
print( ser_obj[8] )
print( '是否>15?',ser_obj > 15 ) #是否大于15
print( ser_obj[ser_obj > 15] ) #输出大于15的数
#通过dict构建Series: 此时dict中的键作为index 值作为values 且自动根据键排序
year_data = {2007:33,2001:20.1,2003:16.5}
ser_obj2=pd.Series( year_data )
print( ser_obj2.head() ) #head默认前五条
print( ser_obj2.index )
print( ser_obj2.values )
import numpy as np
#
array = np.random.randn(5,4) #五行四列
print( array )
df_obj = pd.DataFrame( array ) #看的出比array新增了行索引和列索引
print( type(df_obj) )
print( df_obj.head() )
# 用过dict构建DataFrame
import numpy as np
dict_data = {
'A':1.,
'B':pd.Timestamp('20181211'),
'C':pd.Series( 1,index=list(range(4,8)),dtype='float32' ),
'D':np.array([3] * 4,dtype='int32'), #ndarray
'E':pd.Categorical(["Python","Java","C++","C#"]), #Categorical
'F':'ChinaHadoop'
}
print( dict_data )
df_obj2=pd.DataFrame(dict_data)
print( df_obj2 )
#增加列
df_obj2['G']=[1,2,3,4]
print( df_obj2 )
#删除列
del(df_obj2['G'])
#运算
df_obj=pd.DataFrame( np.random.randn(5,4),columns=['a','b','c','d'] )
print( df_obj )
#求和
print( '按列sum:',df_obj.sum() ) #可以通过 axis 来指定行或列 #默认是按列求和
print( '按行sum:',df_obj.sum(axis=1) ) # axis=1 是按行求
#求最大值
print( '按列max:',df_obj.max())
print( '按行max:',df_obj.max(axis=1))
#求最小值
print( '按列min:',df_obj.min())
print( '按行min:',df_obj.min(axis=1))
#统计描述 describe( percentiles=None , include=None , exclude=None )
#生成描述性统计,总结数据集分布的中心趋势,分散和形状,不包括NaN值
print( df_obj )
df_obj.describe() #输出df_obj 的统计描述
三种索引方式:loc标签索引 .iloc位置索引 .ix混合索引(先按标签索引尝试操作,然后再按位置索引尝试操作)
#标签索引 loc
#Series