版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
项目五数据预处理任务一NumPy数值计算例5-1代码录入行号代码行1importnumpyasnp2#创建一个整数类型的NumPy数组3int_array=np.array([1,2,3,4],dtype=32)4#创建一个浮点类型的NumPy数组5float_array=np.array([1.1,2.2,3.3,4.4],dtype=np.float64)6#创建一个复数类型的NumPy数组7complex_array=np.array([1+2j,3+4j],dtype=plex128)8print(int_array)9print(float_array)10print(complex_array)运行结果[1234][1.12.23.34.4][1.+2.j3.+4.j]例5-2代码录入行号代码行1importnumpyasnp2#定义一个自定义dtype3custom_dtype=np.dtype([4('姓名','U10'),#长度为10的Unicode字符串5('年龄',32),#32位整数字段6('体重',np.float64)#双精度浮点数字段7])8#使用自定义dtype创建结构化数组9data=np.array([10('王欢',30,65.5),11('兰英',25,75.0),12('付杰',35,85.5)13],dtype=custom_dtype)14#访问结构化数组中的字段15print(data['姓名'])#访问'姓名'字段16print(data['年龄'])#访问'年龄'字段17print(data['体重'])#访问'体重'字段运行结果['王欢''兰英''付杰'][302535][65.575.85.5]例5-3代码录入行号代码行1importnumpyasnp2#预设字节顺序3dt=np.dtype('<i8')4print(dt)运行结果int64例5-4代码录入行号代码行1importnumpyasnp2#创建一个一维数组3a=np.array([1,2,3])4print(a)5#输出:[123]6#创建一个二维数组7b=np.array([[1,2,3],[4,5,6]])8print(b)9#输出:10#[[123]11#[456]]12#指定生成数组的数据类型13c=np.array([1,2,3],dtype=complex)14print(c)15#输出:[1.+0.j2.+0.j3.+0.j]16#使用ndmin指定数组的最小维数17d=np.array([1,2,3],ndmin=2)18print(d)19#输出:20#[[123]]运行结果[123][[123][456]][1.+0.j2.+0.j3.+0.j][[123]]例5-5代码录入行号代码行1importnumpyasnp2#创建一个2x3的整数数组3a=np.array([[1,2,3],[4,5,6]])4print("数组:\n",a)5print("维度:",a.ndim)#维度6print("形状:",a.shape)#形状7print("元素总数:",a.size)#元素总数8print("元素数据类型:",a.dtype)#元素数据类型9print("每个元素的大小:",a.itemsize)#每个元素的大小运行结果数组:[[123][456]]维度:2形状:(2,3)元素总数:6元素数据类型:int64每个元素的大小:8例5-6代码录入行号代码行1importnumpyasnp2#创建一个形状为(3,)的一维全零数组3a=np.zeros(3)4#创建一个3x3的二维全零数组5b=np.zeros((3,3))6print(a)7print(b)运行结果[0.0.0.][[0.0.0.][0.0.0.][0.0.0.]]例5-7代码录入行号代码行1importnumpyasnp2#创建一个2x2的未初始化的数组3a=np.empty((2,2))4print(a)运行结果[[1.1.][1.1.]]例5-8代码录入行号代码行1importnumpyasnp2#创建一个形状为(4,)的一维全一数组3a=np.ones(4)4#创建一个4x4的二维全一数组5b=np.ones((4,4))6print(a)7print(b)运行结果[1.1.1.1.][[1.1.1.1.][1.1.1.1.][1.1.1.1.][1.1.1.1.]]例5-9代码录入行号代码行1importnumpyasnp2#创建一个NumPy数组3arr=np.array([0,1,2,3,4,5,6,7,8,9])4#切片操作示例5sub_arr=arr[2:7:2]#从索引2开始到索引7(不包含7),步长为26print(sub_arr)运行结果[246]例5-10代码录入行号代码行1importnumpyasnp2arr=np.array([0,1,2,3,4,5,6,7,8,9])3#使用负数索引切片4last_elements=arr[-4:-1]#取最后四个元素中的前三个5print(last_elements)运行结果[678]例5-11代码录入行号代码行1importnumpyasnp2arr=np.array([0,1,2,3,4,5,6,7,8,9])3#省略start,表示从数组开始位置切片4a=arr[:5]#从开始到索引5(不包含5)5print(a)6#省略end,表示切片到数组末尾7b=arr[5:]#从索引5开始到数组末尾8print(b)9#同时省略start和end,表示切片整个数组,可以用step来取每隔几个元素的值10c=arr[::2]#取所有索引为偶数的元素11print(c)运行结果[01234][56789][02468]例5-12代码录入行号代码行1importnumpyasnp2#创建一个二维NumPy数组3arr_2d=np.array([[0,1,2],[3,4,5],[6,7,8],[9,10,11]])4#取第1到3行(不包含第3行),第0到2列(不包含第2列)的子数组5sub_arr_2d=arr_2d[1:3,0:2]6print(sub_arr_2d)运行结果[[34][67]]例5-13代码录入行号代码行1importnumpyasnp2arr=np.array([0,1,2,3,4,5,6,7,8,9])3#改变数组的形状,不改变数据4reshaped_arr=arr.reshape(2,5)#将一维数组重塑为2行5列的二维数组5print(reshaped_arr)运行结果[[01234][56789]]例5-14代码录入行号代码行1importnumpyasnp2#拼接两个数组3arr1=np.array([1,2,3])4arr2=np.array([4,5,6])5concatenated_arr=np.concatenate((arr1,arr2))6print(concatenated_arr)运行结果[123456]例5-15代码录入行号代码行1importnumpyasnp2#创建一个二维数组3array=np.array([[1,2,3],[4,5,6],[7,8,9]])4#使用.T属性进行转置5transposed_array=array.T6print("使用.T属性转置后的数组:")7print(transposed_array)8#或者使用np.transpose()函数进行转置9transposed_array_func=np.transpose(array)10print("使用np.transpose()函数转置后的数组:")11print(transposed_array_func)运行结果使用.T属性转置后的数组:[[147][258][369]]使用np.transpose()函数转置后的数组:[[147][258][369]]例5-16代码录入行号代码行1importnumpyasnp2a=np.array([1,2,3])3b=np.array([4,5,6])4#方法15c=a+b6#方法27c=np.add(a,b)8print(c)9c=a-b10#或11c=np.subtract(a,b)12print(c)13c=a*b14#或15c=np.multiply(a,b)16print(c)17c=a/b18#或19c=np.divide(a,b)20print(c)运行结果[579][-3-3-3][41018][0.250.40.5]例5-17代码录入行号代码行1importnumpyasnp2#示例1:标量的幂运算3base=24exponent=35result=np.power(base,exponent)6print(result)7#示例2:数组的幂运算,使用相同的指数8base_array=np.array([1,2,3,4])9exponent=210result_array=np.power(base_array,exponent)11print(result_array)12#示例3:数组的幂运算,使用指数数组13base_array=np.array([1,2,3,4])14exponent_array=np.array([0,1,2,3])15result_array=np.power(base_array,exponent_array)16print(result_array)运行结果8[14916][12964]例5-18代码录入行号代码行1importnumpyasnp2score=np.array([[88,80],[67,83],[74,75],[67,79],[56,76]])3print(score)4print('根据行取最大值:\n',score.max(axis=0))#根据行取最大值5print('根据行取最小值:\n',score.min(axis=0))#根据行取最小值6print('根据列求和:\n',score.sum(axis=1))#根据列求和7print('根据行求和:\n',score.sum(axis=0))#根据行求和8print('根据行求平均数:\n',score.mean(axis=0))#根据行求平均数9print('根据行求标准差:\n',score.std(axis=0))#根据行求标准差运行结果[[8880][6783][7475][6779][5676]]根据行取最大值:[8883]根据行取最小值:[5675]根据列求和:[168150149146132]根据行求和:[352393]根据行求平均数:[70.478.6]根据行求标准差:[10.518555032.87054002]例5-19代码录入行号代码行1importnumpyasnp2arr=np.array([1,2,3,4,5])3median=np.median(arr)4print(median)#输出数组的中位数5std_dev=np.std(arr)6print(std_dev)#输出数组的标准差7variance=np.var(arr)8print(variance)#输出数组的方差9max_value=np.max(arr)10min_value=np.min(arr)11print(max_value,min_value)#输出数组的最大值和最小值运行结果3.01.41421356237309512.051例5-20代码录入行号代码行1importnumpyasnp2#创建一个二维数组3arr_2d=np.array([[13,7,5],[8,14,3],[12,4,9]])4#计算数组中的元素最大值(沿着行的方向,即axis=0)5column_max=np.max(arr_2d,axis=0)6print(column_max)#输出每列的最大值7#计算数组中的元素最小值(沿着行的方向,即axis=0)8column_min=np.min(arr_2d,axis=0)9print(column_min)#输出每列的最小值运行结果[13149][843]【学中做】行号代码行1importnumpyasnp2#定义收盘价列表3closing_prices=[100,102,99,101,98,103,105,107,104,106]4#1.计算平均价格5average_price=np.mean(closing_prices)6print(f"平均价格:{average_price:.2f}")7#2.找出最高价和最低价8max_price=np.max(closing_prices)9min_price=np.min(closing_prices)10print(f"最高价:{max_price}")11print(f"最低价:{min_price}")12#3.计算标准差13std_dev=np.std(closing_prices)14print(f"标准差:{std_dev:.2f}")运行结果平均价格:102.50最高价:107最低价:98标准差:3.02【任务拓展】编写一个示例,展示如何利用广播机制对两个形状不同的数组进行数学运算。行号代码行1importnumpyasnp2#创建一个2x3的二维数组3a=np.array([[1,2,3],4[4,5,6]])5#创建一个长度为3的一维数组(行向量)6b=np.array([10,20,30])7#创建一个长度为2的一维数组(列向量需重塑)8c=np.array([100,200]).reshape(2,1)9#示例1:a与b相加(列广播)10result1=a+b11print("示例1:a+b=")12print(result1)13#示例2:a与c相加(行广播)14result2=a+c15print("\n示例2:a+c=")16print(result2)17#示例3:更复杂的运算(乘法和加法结合)18result3=a*b+c19print("\n示例3:a*b+c=")20print(result3)运行结果示例1:a+b=[[112233][142536]]示例2:a+c=[[101102103][204205206]]示例3:a*b+c=[[110220330][204225246]]任务二Pandas数据结构例5-21代码录入行号代码行1importpandasaspd2#从列表创建Series3my_series=pd.Series([1,2,3,4,5])4print(my_series)5#根据索引值读取数据6print(my_series[1])运行结果0112233445dtype:int642例5-22代码录入行号代码行1importpandasaspd2#从列表创建Series,自定义索引3my_series=pd.Series([6,7,8],index=['X','Y','Z'])4print(my_series)5#根据索引值读取数据6print(my_series['Z'])运行结果X6Y7Z8dtype:int648例5-23代码录入行号代码行1importpandasaspd2#从字典创建Series,这里字典的键自动成为索引3my_dict=pd.Series({1:'a',2:'b',3:'c'})4print(my_dict)5#根据索引值读取数据6print(my_dict[3])运行结果1a2b3cdtype:objectc例5-24代码录入行号代码行1importpandasaspd2#通过列表创建DataFrame3data=[['张明',14,88],['李丽',13,92],['王强',14,95]]4df=pd.DataFrame(data,columns=['姓名','年龄','分数'])5print(df)运行结果1姓名年龄分数20张明148831李丽139242王强1495例5-25代码录入行号代码行1importpandasaspd2#从字典的列表创建DataFrame3data=[{'姓名':'张明','年龄':14,'分数':88},{'姓名':'李丽','年龄':13,'分数':92},{'姓名':'王强','年龄':14,'分数':95}]4df=pd.DataFrame(data)5print(df)6#通过loc属性返回指定行的数据7df.loc[0:1]#返回第一行和第二行运行结果姓名年龄分数0张明14881李丽13922王强1495姓名年龄分数0张明141李丽例5-26代码录入行号代码行1importpandasaspd2#从字典的字典创建DataFrame,并指定行索引3data={'A':[1,2],'B':[3,4]}4df=pd.DataFrame(data,index=['Row1','Row2'])5print(df)运行结果ABRow113Row224例5-27代码录入行号代码行1importpandasaspd2#创建学生成绩单3data=[{'姓名':'张明','年龄':14,'分数':88},{'姓名':'李丽','年龄':13,'分数':92},{'姓名':'王强','年龄':14,'分数':95}]4df=pd.DataFrame(data)5#将列标签重命名6df.rename(columns={'姓名':'名字','分数':'成绩'},inplace=True)7print(df)8#将行标签重命名9df.rename(index={0:'学生1',1:'学生2',2:'学生3'},inplace=True)10print(df)运行结果名字年龄成绩0张明14881李丽13922王强1495名字年龄成绩学生1张明1488学生2李丽1392学生3王强1495例5-28代码录入行号代码行1importpandasaspd2#创建学生成绩单3data=[{'姓名':'张明','年龄':14,'分数':88},{'姓名':'李丽','年龄':13,'分数':92},{'姓名':'王强','年龄':14,'分数':95}]4df=pd.DataFrame(data)5#在第二列位置插入新列'性别',值为['男','女','男']6df.insert(1,'性别',['男','女','男'])7print(df)运行结果姓名性别年龄分数0张明男14881李丽女13922王强男1495例5-29代码录入行号代码行1importpandasaspd2#创建学生成绩单3data=[{'姓名':'张明','年龄':14,'分数':88},{'姓名':'李丽','年龄':13,'分数':92},{'姓名':'王强','年龄':14,'分数':95}]4df=pd.DataFrame(data)5#删除名为'年龄'的列6df.drop(columns='年龄',inplace=True)7print(df)8#删除索引为1的行9df.drop(index=1,inplace=True)10print(df)运行结果姓名分数0张明881李丽922王强95姓名分数0张明882王强95例5-30代码录入行号代码行1importpandasaspd2#上面创建的学生成绩单3data=[{'姓名':'张明','年龄':14,'分数':88},{'姓名':'李丽','年龄':13,'分数':92},{'姓名':'王强','年龄':14,'分数':95}]4df=pd.DataFrame(data)5#使用head()方法查看前两行数据6print(df.head(2))7#使用tail()方法查看后两行数据8print(df.tail(2))运行结果姓名年龄分数0张明14881李丽1392姓名年龄分数1李丽13922王强1495【学中做】行号代码行1importpandasaspd2data={3'资产名称':['联想电脑','碎纸机','空调','小轿车'],4'资产原值':[4000,3000,2500,300000],5'残值率':[0.05,0.05,0.05,0.05],6'残值额':[200,150,125,15000],7'期限(月)':[60,60,60,120],8'累计折旧':[316.65,237.50,197.90,4750.00],9'本月折旧':[63.33,47.50,39.58,2375.00]}10df=pd.DataFrame(data)11df['期末净值']=df['资产原值']-df['累计折旧']print(df)任务三Pandas函数调用例5-31代码录入行号代码行1importpandasaspd2#创建一个客户交易记录的DataFrame3df=pd.DataFrame({4'客户id':[101,102,101,103,102,101],5'交易日期':['2023-01-01','2023-01-02','2023-01-01','2023-01-03','2023-01-02','2023-01-01'],6'交易金额':[100,200,50,300,150,50]7})8print("原始交易记录:")9print(df)10#检测重复的交易记录11duplicates=df.duplicated()12print("\n重复的交易记录:")13print(duplicates)14#根据客户ID和交易日期检测重复的交易记录15duplicates_subset=df.duplicated(subset=['客户id','交易日期'])16print("\n根据客户ID、交易日期检测重复的交易记录:")17print(duplicates_subset)运行结果原始交易记录:客户id交易日期交易金额01012023-01-0110011022023-01-0220021012023-01-015031032023-01-0330041022023-01-0215051012023-01-0150重复的交易记录:0False1False2False3False4False5Truedtype:bool根据客户ID、交易日期检测重复的交易记录:0False1False2True3False4True5Truedtype:bool例5-32代码录入行号代码行1#删除重复的交易记录2transactions_no_duplicates=df.drop_duplicates(subset=['客户id','交易日期'])3print("\n处理后的交易记录(无重复):")4print(transactions_no_duplicates)运行结果处理后的交易记录(无重复):客户id交易日期交易金额01012023-01-0110011022023-01-0220031032023-01-03300例5-33代码录入行号代码行1importpandasaspd2#创建一个包含缺失值的DataFrame3df=pd.DataFrame({4'A':[1,2,None,4],5'B':[5,None,None,8],6'C':[9,10,11,None]7})8#使用isnull()检测缺失值9is_null=df.isnull()10print(is_null)11#使用notnull()检测非缺失值12non_is_null=df.notnull()13print(non_is_null)运行结果ABC0FalseFalseFalse1FalseTrueFalse2TrueTrueFalse3FalseFalseTrueABC0TrueTrueTrue1TrueFalseTrue2FalseFalseTrue3TrueTrueFalse例5-34代码录入行号代码行1importpandasaspd2#创建一个包含缺失值的DataFrame3df=pd.DataFrame({4'A':[1,2,None,4],5'B':[5,None,None,8],6'C':[9,10,11,None]7})8#删除包含至少一个缺失值的行9rows=df.dropna()10#删除包含至少一个缺失值的列11columns=df.dropna(axis=1)12#仅当行中全部都是缺失值时才删除该行13all_rows=df.dropna(how='all')14#保留至少有2个非空元素的行15thresh=df.dropna(thresh=2)16print('删除包含至少一个缺失值的行\n',rows)17print('删除包含至少一个缺失值的列\n',columns)18print('仅当行中全部都是缺失值时才删除该行\n',all_rows)19print('保留至少有2个非空元素的行\n',thresh)运行结果删除包含至少一个缺失值的行ABC01.05.09.0删除包含至少一个缺失值的列EmptyDataFrameColumns:[]Index:[0,1,2,3]仅当行中全部都是缺失值时才删除该行ABC01.05.09.012.0NaN10.02NaNNaN11.034.08.0NaN保留至少有2个非空元素的行ABC01.05.09.012.0NaN10.034.08.0NaN例5-35代码录入行号代码行1importpandasaspd2df=pd.DataFrame({3'A':[1,2,None,4],4'B':[5,None,None,8],5'C':[9,10,11,None]6})7#使用0填充所有的NaN值8df_filled=df.fillna(0)9print(df_filled)运行结果ABC01.05.09.012.00.010.020.00.011.034.08.00.0例5-36代码录入行号代码行1importpandasaspd2importnumpyasnp3df=pd.DataFrame({4'A':[1,2,0,4],5'B':[5,-1,-1,8],6'C':[9,10,11,99]7})8print(df)9df_astype=df.astype('float')10print(df_astype)运行结果ABC015912-11020-11134899ABC01.05.09.012.0-1.010.020.0-1.011.034.08.099.0例5-37代码录入行号代码行1importpandasaspd2#初始化两个DataFrame对象3df1=pd.DataFrame({'A':[1,2],'B':[3,4]})4df2=pd.DataFrame({'C':[5,6],'D':[7,8]})5#横向合并两个DataFrame对象6result=pd.concat([df1,df2],axis=1)7#输出合并后的DataFrame8print(df1)9print(df2)10print(result)运行结果AB013124CD057168ABCD0135712468例5-38代码录入行号代码行1importpandasaspd2#初始化两个DataFrame对象3df1=pd.DataFrame({'A':[1,2],'B':[3,4]})4df2=pd.DataFrame({'A':[5,6],'B':[7,8]})5#纵向合并两个DataFrame对象6result=pd.concat([df1,df2],axis=0)7#输出合并后的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026中国心理咨询服务线上化趋势及行业规范与支付体系研究报告
- 2026物流园区光伏储能微电网系统配置与经济运行模式研究
- 2026碳化硅功率器件成本下降趋势预测
- 2026餐饮外卖平台算法优化对商户影响及公平性争议与监管趋势研究
- 新教材高中历史 第一单元 第4课 西汉与东汉-统一多民族封建国家的巩固(3)教学设计 新人教版必修《中外历史纲要(上)》
- 2026年新西兰建筑业行业报告-新西兰华人建筑业协会
- 人教版 九年级化学下册教学设计
- 人教部编版七年级下册第二单元5黄河颂教案设计
- 九年级化学下册 8.2 金属的化学性质教学设计 新人教版
- 七年级英语下册 Module 12 Western music Unit 2 Vienna is the centre of European classical music第4课时教学设计(新版)外研版
- 2026年新高考I卷语文试卷(原卷+答案)
- 统编版2026新教材道德与法治五年级上册第一单元第一课开天辟地的大事变教学设计
- 2026年全国网络安全行业职业技能大赛(网络安全管理员赛项)考试题库(含答案)(附答案)
- 福建省福州市2027届高三上学期开学适应性练习英语试卷(含答案)
- GB/T 31880-2026检验检测机构诚信基本要求
- 2026 年夏季四防洪涝过后复工复产安全课件
- 第2课 探索中国革命道路 第1课时 课件(内嵌视频)2026-2027学年道德与法治五年级上册统编版
- 2026年秋季学期统编版小学语文五年级上册教学计划附教学进度表
- 2026年福建省公需课培训(专业技术人员继续教育)试题及答案
- (正式版)DB11∕T 065-2022 《电气防火检测技术规范》
- 2026中国智能家居设备消费者行为调研报告
评论
0/150
提交评论