一、了解数据处理对象--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()