pandas基操
阿新 • • 發佈:2021-01-12
Pandas中一共有三種資料結構,分別為:Series、DataFrame和MultiIndex(老版本中叫Panel )。
Series是一個類似於一維陣列的資料結構,它能夠儲存任何型別的資料,比如整數、字串、浮點數等,主要由一組資料和與之相關的索引兩部分構成。
DataFrame是一個類似於二維陣列或表格(如excel)的物件,既有行索引,又有列索引。
MultiIndex是三維的資料結構,可以在Series、DataFrame物件上擁有2個及以上的索引。
控制檯格式差距,在jupyter上就好了
疑:
s2.values整數3變成了3.
data.reset_index沒懂
import pandas as pdimport numpy as np def series_(): s1 = pd.Series(np.arange(10)) # 預設索引 s2 = pd.Series([6.7, 5.6, 3, 10, 2], index=np.arange(2, 7)) # 通過列表建立 s3 = pd.Series({'red': 100, 'blue': 200, 'green': 500, 'yellow': 1000}) # 通過字典資料建立 d1 = pd.DataFrame(np.random.random(2)) print(s2.index) print(s2.values) def data_frame(): score = np.random.randint(40, 100, (10, 5)) score_df = pd.DataFrame(score) # 使用Pandas中的資料結構 subjects = ["語文", "數學", "英語", "政治", "體育"] # 構造列索引序列 stu = ['同學' + str(i) for i in range(score_df.shape[0])] # 新增行索引 data = pd.DataFrame(score, columns=subjects, index=stu)# print(data) # print(data.index) # print(data.columns) # print(data.values) # print(data.T) # 轉置 new_stu = ["學生_" + str(i) for i in range(score_df.shape[0])] data.index = new_stu # 必須整體全部修改,這樣改索引是錯的data.index[3] = '學生_3' # data.reset_index() # 重置索引,預設drop=False不刪除原來索引 # print(data.head()) # 不填預設5行,同tail df = pd.DataFrame({'month': [1, 4, 7, 10], 'year': [2012, 2014, 2013, 2014], 'sale': [55, 40, 84, 31]}) df1 = df.set_index('month') # 以月份設定新的索引 df2 = df.set_index(['year', 'month']) # 設定多個索引,以年和月份(DataFrame就變成了一個具有MultiIndex的DataFrame) # print(df2) print(df2.index) print(df2.index.names) print(df2.index.nlevels) def multiindex(): # 建立方式一:元組列表 # m_index1 = pd.Index([("A", "x1"), ("A", "x2"), ("B", "y1"), ("B", "y2"), ("B", "y3")], name=["class1", "class2"]) # 這行有問題報錯,暫時用下面這個 m_index1 = ([("A", "x1"), ("A", "x2"), ("B", "y1"), ("B", "y2"), ("B", "y3")]) df1 = pd.DataFrame(np.random.randint(1, 10, (5, 3)), index=m_index1) print(df1) # 建立方式二:特定結構 class1 = ["A", "A", "B", "B"] class2 = ["x1", "x2", "y1", "y2"] m_index2 = pd.MultiIndex.from_arrays([class1, class2], names=["class1", "class2"]) df2 = pd.DataFrame(np.random.randint(1, 10, (4, 3)), index=m_index2) # print(df2) # 建立方式三:笛卡爾積 # from_product()從多個集合的笛卡爾積建立MultiIndex物件。 m_index3 = pd.MultiIndex.from_product([["A", "B"], ['x1', 'y1']], names=["class1", "class2"]) df3 = pd.DataFrame(np.random.randint(1, 10, (2, 4)), columns=m_index3) # print(df3) if __name__ == '__main__': # series_() # data_frame() multiindex()