一、了解數據處理對象--Series
Series
: 一維數組,類似於Python
中的基本數據結構list
,區別是Series
只允許存儲相同的數據類型,這樣可以更有效的使用內存,提高運算效率。就像數據庫中的列數據;
DataFrame
: 二維的表格型數據結構。很多功能與R
中的data.frame
類似。可以將DataFrame
理解為Series
的容器;
Panel
:三維的數組,可以理解為DataFrame
的容器。
編程要求
創建一個名為series_a
的series
數組,當中值為[1,2,5,7]
,對應的索引為['nu', 'li', 'xue', 'xi'];
創建一個名為dict_a
的字典,字典中包含如下內容{'ting':1, 'shuo':2, 'du':32, 'xie':44}
;
將dict_a
字典轉化成名為series_b
的series
數組。
# -*- coding: utf-8 -*- from pandas import Series,DataFrame import pandas as pd def create_series(): ''' 返回值: series_a: 一個Series類型數據 series_b: 一個Series類型數據 dict_a: 一個字典類型數據 ''' # 請在此添加代碼 完成本關任務 # ********** Begin *********# series_a=pd.Series([1,2,5,7],['nu','li','xue','xi']) dict_a={'ting':1,'shuo':2,'du':32,'xie':44} series_b=Series(dict_a) # ********** End **********# # 返回series_a,dict_a,series_b return series_a,dict_a,series_b
二、了解數據處理對象-DataFrame
編程要求
創建一個五行三列的名為df1
的DataFrame
數組,列名為 [states,years,pops]
,行名['one','two','three','four','five']
;
給df1
添加新列,列名為new_add
,值為[7,4,5,8,2]
。
# -*- coding: utf-8 -*- from pandas import Series,DataFrame import pandas as pd def create_dataframe(): ''' 返回值: df1: 一個DataFrame類型數據 ''' # 請在此添加代碼 完成本關任務 # ********** Begin *********# df1=pd.DataFrame(columns=["states","years","pops"], index=["one","two","three","four","five"]) df1["new_add"]=[7,4,5,8,2] # ********** End **********# #返回df1 return df1
三、讀取CSV格式數據
編程要求
將test3/uk_rain_2014.csv
中的數據導入到df1
中;
將列名修改為['water_year','rain_octsep','outflow_octsep','rain_decfeb', 'outflow_decfeb', 'rain_junaug', 'outflow_junaug']
;
計算df1
的總行數並存儲在length1
中。
# -*- coding: utf-8 -*- from pandas import Series,DataFrame import pandas as pd def read_csv_data(): ''' 返回值: df1: 一個DataFrame類型數據 length1: 一個int類型數據 ''' # 請在此添加代碼 完成本關任務 # ********** Begin *********# df1=pd.read_csv('test3/uk_rain_2014.csv',header=0,encoding='gbk') df1.columns=['water_year','rain_octsep','outflow_octsep','rain_decfeb', 'outflow_decfeb','rain_junaug','outflow_junaug'] length1=len(df1) # ********** End **********# #返回df1,length1 return df1,length1
四、數據的基本操作——排序
Series
用sort_index()
按索引排序,sort_values()
按值排序;
DataFrame
也是用sort_index()
和sort_values()
。
編程要求
根據提示,在右側編輯器Begin-End
處補充代碼:
對代碼中s1
進行按索引排序,並將結果存儲到s2
;
對代碼中d1
進行按值排序(index
為f
),並將結果存儲到d2
。
# -*- coding: utf-8 -*- from pandas import Series,DataFrame import pandas as pd def sort_gate(): ''' 返回值: s2: 一個Series類型數據 d2: 一個DataFrame類型數據 ''' # s1是Series類型數據,d1是DataFrame類型數據 s1 = Series([4, 3, 7, 2, 8], index=['z', 'y', 'j', 'i', 'e']) d1 = DataFrame({'e': [4, 2, 6, 1], 'f': [0, 5, 4, 2]}) # 請在此添加代碼 完成本關任務 # ********** Begin *********# s2=s1.sort_index() d2=d1.sort_values(by='f')#DataFrame必須傳一個by參數表示要排序的列 # ********** End **********# #返回s2,d2 return s2,d2
五、數據的基本操作——刪除
即刪除Series
的元素或DataFrame
的某一行(列)的意思,我們可以通過對象的drop(labels, axis=0)
方法實現此功能。
編程要求
根據提示,在右側編輯器Begin-End
處補充代碼:
在s1
中刪除z
行,並賦值到s2
;
d1
中刪除yy
列,並賦值到d2
。
# -*- coding: utf-8 -*- from pandas import Series,DataFrame import numpy as np import pandas as pd def delete_data(): ''' 返回值: s2: 一個Series類型數據 d2: 一個DataFrame類型數據 ''' # s1是Series類型數據,d1是DataFrame類型數據 s1 = Series([5, 2, 4, 1], index=['v', 'x', 'y', 'z']) d1=DataFrame(np.arange(9).reshape(3,3), columns=['xx','yy','zz']) # 請在此添加代碼 完成本關任務 # ********** Begin *********# s2=s1.drop('z') d2=d1.drop(['yy'],axis=1) # ********** End **********# # 返回s2,d2 return s2, d
六、數據的基本操作——算術運算
DataFrame
中的算術運算是df
中對應位置的元素的算術運算,如果沒有共同的元素,則用NaN
代替。
此外,如果我們想設置默認的其他填充值,而非NaN
的話,可以傳入填充值。
編程要求
根據提示,在右側編輯器Begin-End
處補充代碼:
讓df1
與df2
相加得到df3
,並設置默認填充值為4
。
# -*- coding: utf-8 -*- from pandas import Series,DataFrame import numpy as np import pandas as pd def add_way(): ''' 返回值: df3: 一個DataFrame類型數據 ''' # df1,df2是DataFrame類型數據 df1 = DataFrame(np.arange(12.).reshape((3, 4)), columns=list('abcd')) df2 = DataFrame(np.arange(20.).reshape((4, 5)), columns=list('abcde')) # 請在此添加代碼 完成本關任務 # ********** Begin *********# df3=df1.add(df2,fill_value=4) # ********** End **********# # 返回df3 return df3
七、數據的基本操作——去重
drop_duplicates()
用於去除重復的行數
編程要求
根據提示,在右側編輯器Begin-End
處補充代碼:
去除df1
中重復的行,並把結果保存到df2
中。
# -*- coding: utf-8 -*- from pandas import Series,DataFrame import pandas as pd def delete_duplicated(): ''' 返回值: df2: 一個DataFrame類型數據 ''' # df1是DataFrame類型數據 df1 = DataFrame({'k1': ['one'] * 3 + ['two'] * 4, 'k2': [1, 1, 2, 3, 3, 4, 4]}) # 請在此添加代碼 完成本關任務 # ********** Begin *********# df2=df1.drop_duplicates() # ********** End **********# # 返回df2 return df2
八、層次化索引
編程要求
根據提示,在右側編輯器Begin-End
處補充代碼:
對s1
進行數據重塑,轉化成DataFrame
類型,並復制到d1
。
# -*- coding: utf-8 -*- from pandas import Series,DataFrame import pandas as pd import numpy as np def suoying(): ''' 返回值: d1: 一個DataFrame類型數據 ''' #s1是Series類型數據 s1=Series(np.random.randn(10), index=[['a', 'a', 'a', 'b', 'b', 'b', 'c', 'c', 'd', 'd'], [1, 2, 3, 1, 2, 3, 1, 2, 2, 3]]) # 請在此添加代碼 完成本關任務 # ********** Begin *********# d1=s1.unstack() # ********** End **********# # 返回d1 return d1 suoying()