import pandas as pd
import numpy as np
#Series对象,类似一维数组,左边的数据是索引,右边的一列是数据,自动创建
a1 = pd.Series([1,12])
# print(a1)
a2 = pd.Series([[2,3],[2,4]])
# print(a2)
a3 = pd.Series({'A':1})
# print(a3)
a4 = pd.DataFrame(['a','b','c'])
# print(a4)
a5 = np.random.rand(3,4)
# print(a5)
a6 = pd.DataFrame(a5)
# print(a6)
#构造series对象
a7 = pd.Series(data=list('sdfcesc'))
# print(a7)
# print(type(a7))
#通过values取出一维数组
a8 = a7.values
# print(a8)
a9 = pd.Series(data=list('sdfcesc'),index=list('sdfcesc'))
# print(a9)
# print(type(a9))
#通过字典形式,创建series对象
dict_obj = dict(age=12,name='小安')
a10 = pd.Series(dict_obj)
# print(a10)
s1 = pd.Series(data=list('asdfghjkl'),index=list('ASDFGHJKL'))
# print(s1)
#通过索引名称取值
# print(s1['A'])
#按下标来取值
# print(s1[0])
'''标签索引loc'''
# print(s1.loc['A':'H'])
# print(s1.loc[['A','H']])
'''
高级索引取值
loc取行列的索引,iloc取行列的下标
'''
s1 = pd.Series(data=list('asdfghjkl'),index=list('ABCDEFGHI'))
# print(s1)
arr1 = np.random.rand(3,4)
# print(arr1)
p2 = pd.DataFrame(arr1, index=['A','B','C'], columns=['a','b','c','d'])
# print(p2)
#连续取多行
# print(p2.loc['A':'C'])
# print(p2.iloc[0:2]) #此时左闭右开
#不连续取多列
# print(p2.loc[['A','C']])
# print(p2.iloc[[0,2]])
#连续取多行
# print(p2.loc[:,'a':'c'])
# print(p2.iloc[:,0:1]) #此时左闭右开
#不连续取多行
# print(p2.loc[:,['a','c']])
# print(p2.iloc[:,[0,2]])
'''pandas的增删改'''
s1 = pd.Series(data=list('asdfghjkl'),index=list('ABCDEFGHI'))
# print('series对象')
# print(s1)
arr1 = np.random.rand(3,4)
p2 = pd.DataFrame(arr1, index=['A','B','C'], columns=['a','b','c','d'])
# print('dataframe对象')
# print(p2)
'''增加数据'''
#增加一列数据
p2.loc[:,'e'] = p2.loc[:,'b']+1
# print(p2)
#增加一行数据
p2.loc['D'] = p2.loc['A']
# print(p2)
'''修改数据'''
#修改一个数据
p2.loc['A','a'] = 1
# print(p2)
#修改一串数据
p2.loc[:,'b'] = [1,2,3,4]
# print(p2)
'''删除数据'''
p3 = p2.drop('A',axis=0) #删除的是copy过来的对象里的值,不会改变原来的对象
# print(p3)
# print(p2)
p4 = p2.drop('a',axis=1)
# print(p4)
# print(p2)
'''数据的对齐运算add(),sub(),mul(),div()'''
s1 = pd.Series(range(10,15),index=list('abcde'))
# print(s1)
s2 = pd.Series(range(20,25),index=list('cdefg'))
# print(s2)
#add
s3 = s1.add(s2)
s4 = s1.add(s2,fill_value=100) #如果找不到对应的就加默认值100
# print(s3)
# print(s4)
#sub
s3 = s1.sub(s2)
# print(s3)
# mul
# 同上
# div()
# 同上
'''数据连接merge'''
d1 = pd.DataFrame(np.arange(16).reshape(4,4),index=list('abcd'),columns=list('ABCD'))
d2 = pd.DataFrame(np.arange(10,26).reshape(4,4),index=list('cdmn'),columns=list('CDEF'))
# print(d1)
# print(d2)
#
# print(pd.merge(d1,d2))