python数据分析 pandas库的学习(1)

  今天主要学习series这种数据结构。

  

  python的常用数据结构分为series和Dataframe,前者形式类似于带标签的一维向量,后者形式则是带有横纵标签的表格。'''

  先按条目讲述series
1.series由value和index构成,一个是值一个是索引,其中的数据是numpy数组的array数组构成的
2.series可以看成一个定长有序字典,index是键,value是值
3.series的value和index是互相独立的,但是和numpy型数组一样运算会保留键对之间的联结。
4.series因为有键所以是竖着的。
5.series、array中的数据类型必须是相同的,但list中可存储不同类型数据。

  下面是代码。

# 进入操作阶段,首先是创建
'''无索引创建的时候,索引就是从0开始的数值
    有索引但没有自定义对应的时候自动对应
    可以自定义对应'''
'''listser = pd.Series(list(x*x for x in range(5)),index=['a','b','c','d','e'])
print(tser) #由列表数据的到series,值和键都可以用列表表示。'''

dict = {'a':'+','b':'-','c':'=','d':'*','e':'/'}
dictser = pd.Series(dict)
'''print(dictser)'''

array = np.arange(5,10)
arrser = pd.Series(array,index = list("abcde"))
#print(arrser)

#上述就是结合三种数据类型的操作,而只要是由键对一一对应的类型都可以

#下面开始讲解具体操作,增删改查
#[]的快捷查询方式
'''print(arrser['b']) #直接根据索引查询某个值
print(arrser[0:2]) #传统的切片模式,左闭右开区间
print(arrser['a':'c']) #索引切片,和数值切片不同的是这是个整闭区间
print(arrser[[0,2]],arrser[['a','c']]) #使用列表作为索引工具,可以实现跳跃一一对应'''

#基于loc[]的索引和[]的方式是一模一样的
'''print(arrser.loc['b'])
# loc不能做[0:2]这样的切片
print(arrser.loc['a':'c'])
print(arrser.loc[['a','c']])'''

# 基于iloc的索引不需要索引,直接填位值
'''print(arrser.iloc[1])
print(arrser.iloc[0:2])#右开左闭切片
print(arrser.iloc[[0,2]])#返回列表元素对应值

#直接导出所有的值和索引,和字典的操作一样
print(arrser.index)
print(arrser.values)'''

#增加操作
'''arrser['h']=8 #和字典的操作一样,赋值直接增加一行
print(arrser)'''

#直接增加一个series,等同于将另一个series后续拼接
'''ignore_index的含义是是否清除后续series的键然后重新生成
    series和字典的区别在于其index即键是可以重复的。'''
'''k=arrser.append(dictser,ignore_index=False)
print(k.loc['a'])'''


#删减操作用drop函数
'''print(arrser.drop('a'))
print(arrser.drop(['a','c']))'''

#pandas不能修改类似元组类型的索引,只能整体替换,保障一一对应的关系就好
'''arrser.index = ['h','j','k','l','y']
print(arrser)

#rename函数可以以字典形式对索引进行修改
print(arrser.rename({'h':'a'}))'''

#pandas可以通过键对值进行直接修改
'''arrser['b']=10
print(arrser)
arrser['a':'c']=100 #还能进行多重变换
print(arrser)
#replace函数可以对一个列表或单个数字进行修改,修改值只能是单一值因为要对应
print(arrser.replace(to_replace=[100,8],value = 5))'''

#其他操作,对series的数据做初步统计分析
'''print(arrser.describe())'''
#对series整体运算和numpy1的运算一致,直接算就可以了



print(arrser[arrser.notnull()]) #在存在空值的series中找非空值
print(arrser[arrser.isnull()]) #找空值
#填充空值 arrser = arrser.fillna(arrser.mean()) 函数内部就是填充值,为减少误差直

猜你喜欢

转载自www.cnblogs.com/zdl4/p/12506124.html