DataFrame的索引,刪除,運算,廣播,排序小例子

import pandas as pd
import numpy as np

se = pd.Series([1,2,3],index=['a','b','c'])
print(se)
print("索引:")
print(se["b"])
print(se[1])
print(se[['b','c']])
print(se.index)
print(se.values)


print("創建DataFrame:")
df_1 = pd.DataFrame([[1,2,3],[4,5,6]],index=['NO1','NO2'],columns=["a","b","c"])
print(df_1)
data = {'id':[0,1,2],'name':['Bob','Jerry','Tom']}
df_2 = pd.DataFrame(data)
print(df_2)

print("打印DataFrame信息:")
print(df_2.info())
print(type(df_2.values))
print(df_2.index)
print(df_2.columns)
print(df_2.ndim)

print("DataFrame篩選:")
print("列篩選:")
print(df_2['id'])
print("行篩選:")
print(df_2.loc[1])
print("下標篩選:")
print(df_2.iloc[1,1])
print("花式索引:")
print(df_2.iloc[[0,2],1])

print("添加一列:")
print(df_2)
df_2['scores'] = [99,99,99]
print(df_2)
print("添加一行:")
print(df_2)
df_2.loc[3] = [1,"Mary",99]
print(df_2)

# print("刪除:")
# print("刪除一行:")
# #inplace參數:控制刪除後的DataFrame是否代替原DataFrame對象,默認爲False爲不替代
# #axis控制對行還是列進行操作,0爲對行,1爲對列
# df_2.drop(3,axis=0,inplace=True)
# #也可以   df_2 = df_2.drop(3,axis=0)
# print(df_2)
# print("同時刪除兩列:")
# df_2.drop(['id','scores'],axis=1,inplace=True)
# print(df_2)
# print("同時刪除某行某列:")
# df_2 = df_2.drop(index=[0,3],columns='id')
# print(df_2)

print("多個DataFrame進行運算:")
#+  -  *  /  % 都可以使用
se_1 = pd.Series(np.arange(4),index=list('abcd'))
se_2 = pd.Series(np.arange(4,8),index=list("acer"))
print(se_1)
print(se_2)
print(se_1+se_2)

#add()  sub()  mul()  div()  mod()
add_value = se_1.add(se_2)
print(add_value)
add_value = se_1.add(se_2,fill_value=0)  #fill_value:在沒有值的位置填充相應數值
print(add_value)

df_1 = pd.DataFrame([[1,1,1],[2,2,2]],index=list('ab'),columns=list("qwe"))
df_2 = pd.DataFrame([[2,2,2],[2,2,2]],index=list('ac'),columns=list("qwr"))
print(df_1)
print(df_2)
print(df_1*df_2)

#廣播
print("array")
arr1 = np.array([np.arange(1,3),np.arange(3,5)])
# arr = np.array([1,3,4],[2,5,6])
# print(arr1+arr) #這裏會報錯 因爲形狀不一樣 無法進行運算
arr2 = np.array([[1],[1]])
print(arr1)
print(arr2)
print(arr1+arr2)

print("DataFrame")
df = pd.DataFrame(np.arange(12).reshape(4,3),columns=list('abc'))
se = df['b']
print(df)
print(se)
print(df.sub(se,axis = 0))

print("排序:")
print("對索引進行排序:")
df = pd.DataFrame(np.arange(12).reshape(4,3),columns=list('abc'),index=['one','two','three','four'])
print(df)
print(df.sort_index())  #行索引排序
df = pd.DataFrame(np.arange(12).reshape(4,3),columns=list('acb'),index=['one','two','three','four'])
print(df)
print(df.sort_index(axis=1)) #列索引排序
print(df.sort_values(by=['a']))  #by是根據哪一列數值進行排序
print(df.sort_values(by=['a','b']))  #優先排a列 如果a列數值一樣再看b列數值
print(df.sort_values(by=['a'],ascending=False))  #ascending爲降序排列,

這些例子都有註釋,也比較簡單,基本對比運行結果一看就明白。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章