import numpy as np
import pandas as pd
data=pd.Series([0.25,0.5,0.75,1.0])
#print(data)
'''
0 0.25
1 0.50
2 0.75
3 1.00
dtype: float64
'''
#series有values属性和index属性。
#print(data.values)
#print(data.index)
#[0.25 0.5 0.75 1. ]
#RangeIndex(start=0, stop=4, step=1)
#series和numpy数组的不同是索引,numpy是隐式索引,series是显示索引,而且可以定制series的索引。
data1=pd.Series([0.25,0.5,0.75,1.0],index=['a','b','c','d'])
#print(data1)
'''
a 0.25
b 0.50
c 0.75
d 1.00
dtype: float64
'''
#可以吧series看成特殊的字典。
#print(data1.keys())#Index(['a', 'b', 'c', 'd'], dtype='object')
#print(data1.items()#<zip object at 0x08325670>
#print(list(data1.items()))#[('a', 0.25), ('b', 0.5), ('c', 0.75), ('d', 1.0)]
dict1={'aa':'星期一','bb':'星期二','cc':'星期三'}
data2=pd.Series(dict1)
#print(data2)
'''
aa 星期一
bb 星期二
cc 星期三
dtype: object
'''
#dataframe也可以看成是一个通用型的numpy数组或是字典。看成若干series序列,有共同索引构成的。
dict2={'aa':'工作','bb':'工作','cc':'休息'}
data3=pd.Series(dict2)
data4=pd.DataFrame({'weekday':data1,'work':data2})#这里面放的是字典。
#print(data4)
'''
weekday work
a 0.25 NaN
aa NaN 星期一
b 0.50 NaN
bb NaN 星期二
c 0.75 NaN
cc NaN 星期三
d 1.00 NaN
'''
#dataframe有index和columns两个属性。最好把dataframe看成通用的字典,有助于理解索引。
#pandas还有一个index对象,该对象可以看成一个不可变数组或有序集合。在取值上与数组很相似。
#这是集合操作:
inda=pd.Index([1,3,5,7,9])
indb=pd.Index([2,3,5,7,11])
#print(inda&indb)
#print(inda | indb)
#print(inda^indb)
'''
Int64Index([3, 5, 7], dtype='int64')
Int64Index([1, 2, 3, 5, 7, 9, 11], dtype='int64')
Int64Index([1, 2, 9, 11], dtype='int64')
'''
#pd.series的索引默认是显示的索引。
lizi=pd.Series(['a','b','c'],index=[1,3,5])
#print(lizi[1])#取值是显式索引 a
#print(lizi[1:3])#切片时隐式索引
'''
3 b
5 c
'''
#为了不混淆,引入索引器。loc()代表切片和取值都是显式,iloc()代表都是隐式索引。
#对于dataframe来说,可以看成一个字典,此时取值的话一般都是按列取,当看成多维数组的话,
#可以用values属性来查看行,
#print(data4.values)
'''
[[0.25 nan]
[nan '星期一']
[0.5 nan]
[nan '星期二']
[0.75 nan]
[nan '星期三']
[1.0 nan]]
'''
#进行转置,data.T
#若是要取某行的话,只需要data.values[行号]