数据分析练习1

寒假的练习任务

寒假学习了Python数据分析基础这本书,然后在学习完之后为了检验学习进度,布置了分析10万条数据的任务。

要求是这样的:

数据样例:
18 Jogging 102271561469000 -13.53 16.89 -6.4
18 Jogging 102271641608000 -5.75 16.89 -0.46
18 Jogging 102271681617000 -2.18 16.32 11.07
18 Jogging 3.36
18 Downstairs 103260201636000 -4.44 7.06 1.95
18 Downstairs 103260241614000 -3.87 7.55 3.3
18 Downstairs 103260321693000 -4.06 8.08 4.79
18 Downstairs 103260365577000 -6.32 8.66 4.94
18 Downstairs 103260403083000 -5.37 11.22 3.06
18 Downstairs 103260443305000 -5.79 9.92 2.53
6 Walking 0 0 0 3.214402

处理一:
将数据中所有的行信息有问题的那行信息删除,如样例中第四条数据
这一行数据只有三个元素,而其他行都有六个元素,所以删除第四条即可
再如最后一行第三个信息明显有问题所以该行也是问题行,删除即可
其他问题自己去找
将全部数据处理完之后,每行单个元素以逗号为分隔,写入文件test1
test1中样例:
6,Walking,23445542281000,-0.72,9.62,0.14982383,
6,Walking,23445592299000,-4.02,11.03,3.445948,
6,Walking,23470662276000,0.95,14.71,3.636633,

这个处理一要求的是将数据样例中的错误信息删除,错误有两处,第一就是有的数据只有3行,第二就是有的数据从第三行开始都是0。这就是这个数据处理中的第一步,代码如下`

#!/usr/bin/env python3

import sys
import csv

input_file=sys.argv[1]
output_file=sys.argv[2]


a_len=6

with open(input_file,'r',newline='')as csv_in_file:
    with open(output_file,'w',newline='')as csv_out_file:
        filereader=csv.reader(csv_in_file,delimiter=' ')
        filewriter=csv.writer(csv_out_file)
        for row_list in filereader:
            if len(row_list) == a_len and row_list[2] != '0':
                filewriter.writerow(row_list)

思路很简单,先看正常数据它的长度为6,那我我给他定义一个a_len=6,然后在数据中循环,如果等于6那么就输出,如果小于6那么就不输出,这样便可以清理掉第一部分错误数据。然后之前说从第三行开始,数值为0,那么我们就可以让第三行不等于0的数据输出,这样处理一就解决了。而要注意的是首先0在这里不是数字0,而是‘0’,如果你按照数字0来处理的话,是解决不了的,其次注意的是row[2]代表的意思是第3行,因为他是从0算起的。最后也是最重要的,是我刚开始做怎么也得不到正确的答案的地方,就是delimiter,delimiter=‘,’是默认分隔符,所以如果你的输入文件和输出文件都是用逗号分隔的,就不需要这个指定参数。而这个初始数据是以空格分隔得,所以必须要delimiter=‘ ’,才可以正常输出。

处理二:
将test1数据中所有动作的数目统计出来,将动作数目打印到屏幕,
后将动作数目变为100的倍数,多余的删除,
比如你统计出Jopping地数量为3021次
那么打印出3021后只往文件写入3000条,写入文件test2

处理二是让将所有的动作数据统计出来,并且变为100的倍数输出。这个我分了两步,第一,先统计所有动作的数目,第二,将他们变为100的倍数输出。

import csv
input_file="text1answer.csv"
output_file="text2.csv"
with open(input_file ,'r',newline='')as csv_in_file:
    with open(output_file,'w',newline='')as csv_out_file:
        filereader = csv.reader(csv_in_file)
        a_dict={}
        for row in filereader:
            if row[1] in a_dict.keys():
                a_dict[row[1]]+=1
            else:
                a_dict[row[1]]=1
        for values in a_dict.keys():
            print(values," : ",a_dict[values])

这行代码的意义便是将所有动作的数目统计出来并打印出来。这个代码很好想,不好想的是接下的步骤。

import csv
input_file="text1answer.csv"
output_file="text2.csv"
a_dict={"Walking":[0, 35000],"Jogging":[0, 31200],"Sitting":[0, 6500],"Upstairs":[0, 10400],"Downstairs":[0,9400],"Standing":[0,7700]}
with open(input_file, 'r', newline='')as csv_in_file:
    with open(output_file, 'w', newline='')as csv_out_file:
        filereader=csv.reader(csv_in_file)
        filewriter=csv.writer(csv_out_file)
        for row in filereader:
            if row[1] in a_dict.keys():
                a_dict[row[1]][0]+=1
                if a_dict[row[1]][0] <= a_dict[row[1]][1]:
                    filewriter.writerow(row)

这行代码就是将动作统计出来后变为100的倍数,举个例子,walking的数目是35012,那他100的整数倍就是35000,这就是要统计walking的最后一个值,就这样以此类推,得到了处理二所要的结果,这里重点说的是keys()函数,它的意义是返回一个由字典所有键构成的列表,如果忘掉了这个函数,那么这个题很难做出来。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python数据分析练习是指通过使用Python编程语言来处理和分析数据的实践活动。这些练习旨在让学习者掌握如何使用Python的数据分析库来处理和分析实际的数据集。 在Python数据分析练习中,学习者首先需要了解如何读取和导入数据集。Python有很多库可以用于读取和处理各种格式的数据,例如CSV、Excel、JSON等。学习者需要学习如何使用这些库来加载和处理自己感兴趣的数据。 然后,学习者需要学习如何清洗和预处理数据。数据通常存在一些缺失值、异常值和重复值,需要使用Python库来清洗和处理这些问题。此外,学习者还需要了解如何对数据进行规范化和标准化,以便于后续的分析工作。 接下来,学习者可以学习如何使用Python进行数据分析和可视化。Python有很多数据分析库,例如Pandas、NumPy和Matplotlib等。学习者需要学习如何使用这些库来计算统计指标、绘制图表和进行数据挖掘。学习者可以使用这些库来回答自己感兴趣的问题,例如数据的趋势、相关性和模式等。 最后,学习者需要学习如何进行数据报告和沟通。数据分析不仅仅是处理数据,还需要将结果以清晰和易懂的方式传达给其他人。学习者可以使用Python的文档编写和可视化库来创建数据报告和可视化演示,以向他人展示分析结果。 总之,Python数据分析练习是通过使用Python编程语言来处理和分析数据的实践活动。学习者需要学习如何读取和导入数据、清洗和预处理数据、使用数据分析和可视化库进行数据分析,以及进行数据报告和沟通。这些练习可以帮助学习者掌握Python数据分析的技能,为实际问题提供解决方案。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值