1. 程式人生 > >python之pandas的簡單使用01

python之pandas的簡單使用01

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))