Python(实验3 数据科学计算)

(1)通过列表对象[[1,2,3,4],[5,6,7,8]]构建numpy的ndarray对象,并分别进行如下操作:①对数组对象进行水平分割和垂直分割,输出每一步的计算结果;②将数组对象序列化到myArray.npy二进制文件中,读取myArray.npy二进制文件中保存的数组并输出。

(2)通过字典对象{“a”:10, “b”:101, “c”:62, “d”:102}创建Series对象s1,要求元素按照如下索引值顺序存储: “c”, “b”, “a”,“d”,并完成:①输出s1中大于平均值(所有元素)的元素;②接收用户输入的查询index值,并判断s1中有无此索引值的元素,有则输出该索引的value,没有则输出“无此index项!”。

(3)建立DataFrame对象对下列数据进行存储,并完成以下统计功能:①统计出北京市的所有数据;②统计出所有“同比”大于130的城市的所有数据;③统计出所有“同比”大于120且“环比”大于101.3的城市的名字。

(4)读取饭店的消费数据文件“meal_order_info.csv”,完成如下处理:①info_id和emp_id为0是非正常数据,读取数据时自动将这类数据变为NaN;②输出前10个订单中的消费者会员编号和姓名;③统计并输出每列中包含的空值的数量;将订单中的消费额expenditure列数据离散到3个区间(建立新列expenditure_Discrete来存储结果),并统计每个区间的用户数量;④丢弃数据中全部为缺失值的列;⑤使用6填充“number_consumers”列中的NA值;⑥归一化消费额expenditure列(建立新列expenditure_Norm来存储结果)。

实验内容1代码:
import numpy as np
a=np.array([[0,1,2,3],[5,6,7,8]])
b=np.array([[0,1,2,3,4],[5,6,7,8,9]])
#print(a)
print('垂直分割',np.hsplit(a,2))
print('水平分割',np.vsplit(b,2))
np.save('myArray.npy',a)
a_load=np.load('myArray.npy')
print(a_load)


实验内容2代码:
import pandas as pd
b=pd.Series([62,101,10,102],index=['c','b','a','d'])
print(b)
aver=0
for key,value in b.items():
    aver+=value
aver/=4
print("平均值为:{}".format(aver))
for key,value in b.items():
    if value > aver:
        print(key)

#输入用户想要的index
print("输入想要的index值")
x=input()
flag=0
for key,value in b.items():
    if key==x:
        flag=1
        print(value)

if flag==0:
    print("无此index项目!")

实验内容3代码:
import pandas as pd
import numpy as np
d = {'城市':['北京','上海','广州','深圳','沈阳'],
      '环比':[101.5,101.2,101.3,102.0,100.1],
      '同比':[120.7,127.3,119.4,140.9,101.4],
      '定基':[121.4,127.8,120.0,145.5,101.6],}
df=pd.DataFrame(d,index=['c1','c2','c3','c4','c5'])
print(df)
print(df[df['城市']=='北京'])
print(df[df['同比']>130])
print(df[(df['同比']>120) & (df['环比']>101.3)]['城市']):

实验内容4代码:
import numpy as np;
import pandas as pd;
df = pd.read_csv('meal_order_info.csv',encoding='gbk')
df.loc[df['info_id']==0,'info_id'] = None
df.loc[df['emp_id']==0,'emp_id'] = None
#info_id和emp_id为0是非正常数据,读取数据时自动将这类数据变为NaN
print(df[['number_consumers','NaNme']].head(10))
#输出前10个订单中的消费者会员编号和姓名
print(df.isnull().sum())
#统计并输出每列中包含的空值的数量;将订单中的消费额expenditure列数据离散到3个区间(建立新列expenditure_Discrete来存储结果),并统计每个区间的用户数量;
df['expenditure_Discrete'] = pd.cut(df['expenditure'],bins=[0,100,200,300],labels={'low','medium','high'})
#丢弃数据中全部为缺失值的列
df.dropna(axis=1,how='all',inplace=True)
#使用6填充“number_consumers”列中的NA值;
df['number_consumers'].fillna(6,inplace=True)
#归一化消费额expenditure列(建立新列expenditure_Norm来存储结果)。
df['expenditure_Norm'] = (df['expenditure']-df['expenditure'].min())/(df['expenditure'].max()-df['expenditure'].min())
代码运行截图:

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Sky逆流而上

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值