东北大学python大作业

      目前金属矿开采,爆破还是主要的破岩方式,为了保证巷道采场的安全,需要对爆破震动进行监测,获取的监测数据如附件,第1列数据为震动的序号,第2、3、4列为x,y,z三个方向的震动速度,往往由于各种因素如环境、采集设备故障等导致采集的数据存在缺失、异常、冗余等现象,这会降低系统分析和预测能力,因此,如何将获取“脏数据”进行科学合理的清洗是亟待解决的问题。一般说来,脏数据主要存在异常、缺失和冗余这三类,如某一行的数据不是4列,或者x,y,z缺失或者格式为字符不是数字等。对数据进行清洗后,请计算出爆破振动的合速度,建立新的文件,保存在第5列,在文件开头保存程序运行时的系统时间和程序开发者姓名,并绘制出合速度的波形图,绘制波形使用turtle库或matplotlib库。

 

import csv
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt


out = open('data.csv', 'w+', newline='')
csv_writer = csv.writer(out, dialect='excel')

f = open("data.txt", "r")
flag = 0
for line in f.readlines():
    lst = list(line.strip('\n').split(','))  # 将字符串转为列表,从而可以按单元格写入csv
    for item in lst:
        if item == 'X(S)' or item == 'X(cm/s)' or item == 'Y(cm/s)' or item == 'Z(cm/s)':
            flag = 4
            break
        elif item.islower():
            flag = 0
            break
        elif item.find('.') < 3 and item.find('.') > 0:
            flag = flag+1
            continue

    if flag == 4:
        csv_writer.writerow(lst)
    flag = 0


# 读取数据文件
reader = pd.read_csv('data.csv', header=[0])
X = reader.iloc[:, 1]
Y = reader.iloc[:, 2]
Z = reader.iloc[:, 3]
T = reader.iloc[:, 0]
# 计算合速度
V = np.sqrt(X**2 + Y**2 + Z**2)
#将V存入第五列
reader['V'] = V
reader.to_csv('data.csv', index=False)
# 绘制波形图
plt.figure(num=1, figsize=(8, 4))
plt.plot(T, V,  color='green')
plt.legend()
plt.xlabel('time')
plt.ylabel('velocity')
plt.title('Blasting vibration composite velocity waveform graph')
plt.grid()
plt.show()

如果不出意外的话,这可能是我的python系列的最后一篇文章了。

在文章的最后是我的致谢环节:

       首先,感谢王老师,王运森老师真的教的非常用心,他的课程配合Python语言基础程序(第二版)学习,真的学习感觉非常好,学生无以为报,当以所学知识为国家为人民放光发热,继先生之学,传先生之术。

       然后,感谢我的程海师兄对我这篇文章的点拨,没有他的指导,我或许要多走许多弯路才能完成这个程序,在此特别鸣谢一下。

附(数据处理结果及波形图):

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
python大作业 一、Turtle创意大PK 自拟题目,完成一个利用Python程序的创意绘图,采用turtle库绘图为主,不少于50行代码,可选采用其他库。 (滑稽绘制) 二、程序练习 2.1 问题描述(10分) 人们常常提到"一万小时定律",就是不管你做什么事情,只要坚持一万小时,应该都可以成为该领域的专家。那么,10000小时是多少年多少天呢? 2.2 问题描述(10分)0380031003800341590145037657 编写计算从n到m和的函数‬,函数名为sum(n,m)‬,函数返回值为n到m所有数据的和‬,使用该函数计算输入数据x,y之间所有数据的和。 2.3 问题描述(15分) 编写函数judgeTri(a,b,c),判断以参数a,b,c的值为边长能否构成三角形并判断三角形的形状;若是锐角三角形,返回R;若是直角三角形,返回Z;若是钝角三角形,返回D;若三边长不能构成三角形,返回ERROR。 2.4 问题描述(15分) 用户输入一个字符串,分别统计其中小写字母、大写字母、数字、空格和其他字符的个数,并在一行内输出小写字母、大写字母、数字、空格和其他字符的个数。 2.5 问题描述(20分) 程序的功能: (1) 使用随机库功能,生成一个包含10个不重复且小于200的正整数列表ls1,输出ls1。‬ (2) 使用列表排序方法,对ls1按奇数在前偶数在后,并且奇数之间的相对顺序不变,偶数之间的相对顺序也不变进行排序,再输出ls1。‬ (3) 使用列表排序方法,对ls1按元素字符长度降序进行排序,输出ls1。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值