这是一篇教程类的博客,面向的是非计算机专业的同学,所以比较基础

1. 使用语言和包

这里我用的是python进行处理。So, why python?

  1. Python语法相对简单,不是程序员的话,当做工具来用还是不错的。(如果是程序员,我建议还是C语言起步,充分了解相关概念和语法,其他的语言相比C语言都多多少少做了简化)

  2. 其次Python里面封装好的包有很多很多,所以很多操作,我们不需要自己写函数,大大减少了在写代码上花费的时间

  3. 比较安全,这里说的有点牵强,不过我也要强调一下。曾经在C语言里面学习的指针,其值是一个内存地址。如果你代码能力不足,不小心让指针指向某个甚至某几个系统的变量,然后你还做了数据的更改,可能你的系统就被你弄坏了。Python大多数情况不需要你自己去定义,去写指针。所以,我说比较安全

1.1 python环境安装

这里我就用这位同学的电脑当做实例来讲解。
首先python它的电脑上是有的。按下"win+R":输入CMD,然后确定弹出的窗口中输入python,然后回车:

可以看到她安装的是python3.8,对于pandas这个包,版本已经足够了。如果第一次安装当然直接装python3.8就好,如果之前装过,且版本在python2的时代,那你就比较麻烦啦,首先去装一个python3,然后后面需要在pycharm中更改python interperter,改为python3.

接下来去官网下载pycharm,并安装
这里给个链接吧:
这个家伙是下载网址的连接

一般情况下,刚刚安装好的pycharm打开以后会出现这个情况:
那是因为你的pycharm还没有导入python interpreter,接下来点击左上角的file->settings
这里选择Project下的Python Interpreter:
啊!居然是空的。。。当然是空的啦,需要手动添加一下interpreter,点左上角那个齿轮,然后点add
接下来把你的之前安装好的python放进来就可以了:

1.2 pandas包的安装(这里只是一个例子)

这边数据处理我选择用的是pandas,其他的包安装起来都是一样的

上一步添加好了python的包之后,就能看到有这两个家伙已经在这里了:
接下来我们要去安装pandas,我仅提供一种安装方案吧,其他的去Baidu上都有
点击右边的“+”或者按下"ALT+INSERT"
如果在国内的话,我建议做这样一个操作,就是把下载地址改为清华源。国外的小伙伴们就不用啦,点击下方的Manage Repositories,进入下面这个页面:
点击右边的"+",输入这个地址:
https://pypi.tuna.tsinghua.edu.cn/simple
然后把原先那个可以删了,点击确定。然后返回刚刚那个界面,在上方搜pandas,点击下面的install package就行了
然后你就会发现它在自动安装了:

2. 要做的一个数据处理

安装好了上述东西只是一个开始,接下来的东西才是重点–数据处理
由于不同数据的不同处理多种多样,我也不方便一次全讲了,只好拿这个例子,给尝试进行数据处理的同学们做一个示范:

2.1 数据处理的需求:

拿到一个很大的表,表里面每一行为一条记录,我现在要找出速度(第7列)都为0的车牌号(第3列),并且删除它们。
举个例子,下表中,7057和9205的两辆车是没有速度为0的记录的,所以是铁定不删的
然后是5052这辆车,有速度为0的记录,并且有速度不为0的记录,所以也是不删的(这里代码写不好的话,可能会误删)
最后是5752这辆车,所有的记录中,速度都为0,所以是需要删除的

这里就用一个简单的例子展示一下怎么用python

2.2 代码实现

这里如果我从零开始讲python的话,又可以写一本书了,所以,基础知识仍然是跳过,我只讲思路,然后直接给代码。当然我会尽力讲的细一些

2.2.1 思路

先读入的数据在一个二维数组中存储
先找出所有速度为零的行(返回一个包含所有行号的一位数组即可)
然后找到对应的车牌号,这些车都被列入即将删除的列表
然后找该车牌号所有的记录中的速度,如果出现非0,就不删,其他的都是一定要删的

2.2.2 读入原来的表

首先,这张csv表应该放在python工程的目录下,目录在这里打开


接下来打开那张表,我直接写了一个函数,输入是该文件的文件名(不要打.csv),然后返回一个二维数组

def read_data(file_name = 'old'):    with open('{}.csv'.format(file_name), 'r', encoding='utf-8') as rf:        data = list(csv.reader(rf))    return data

2.2.3 找到速度为零的所有记录

找出所有速度为零的行(返回一个包含所有行号的一位数组即可)

这里给新手的提示,首先数组是0开始的,所有第7列这边就要写6
其次表格里存的0,我们读进来以后其实是字符,而非一个整数,所以这里是‘0’

#这个是用来找哪一行有0的函数!!def find_zeros(table):    rownums = []    for rownum in range(len(table)):        if (table[rownum][6] == '0'):            rownums.append(rownum)    return rownums

2.2.4 找到对应的车(要删的)

然后找到对应的车牌号,这些车都被列入即将删除的列表
然后找该车牌号所有的记录中的速度,如果出现非0,就不删,其他的都是一定要删的

#这个函数用来找那些要删的车,返回的是一个行号的列表def find_all_zero_cars(table,zero_rownums):    row_of_car_nums=[]    #find all the cars    car_number=[]    for rownum in zero_rownums:        car_number.append(table[rownum][2])    for number_of_car in range(len(car_number)):        going_be_deleted = True        for i in range(len(table)):            if ((table[i][2] == car_number[number_of_car]) and not(table[i][6]=='0')):                going_be_deleted = False        if (going_be_deleted):            row_of_car_nums.append(car_number[number_of_car])    return row_of_car_nums

2.2.5 写一个新的表格(删除操作完成后)

def delete_data(car_numbers):    file_new = 'new_data.csv'    file_old = 'old.csv'    with open(file_old,'r',newline='',encoding='utf-8')as file_old, \            open(file_new,'w',newline='',encoding='utf-8') as file_new:        f_csv_old = csv.reader(file_old)        f_csv_new = csv.writer(file_new)        for i, rows in enumerate(f_csv_old):  # 保留header            if i == 0:                f_csv_new.writerow(rows)                break        for index in range(len(car_numbers)):            for rows in f_csv_old:                if rows[2] != car_numbers[index]:                    f_csv_new.writerow(rows)    os.remove("old.csv")

2.3 代码执行

代码的执行都是在main函数中的,所以,想要执行上面的函数,就需要在main函数中调用。

这里在提示新手一下,上面的包安装后需要Import一下

import csvimport osimport data_disposeif __name__ == '__main__':    table = read_data()    print(len(table))    delete_data(data_dispose.find_all_zero_cars(table,data_dispose.find_zeros(table)))

之后点击右上角的执行按钮就可以运行了

执行之后我们会发现这里多了一个"new_data.csv"

打开后发现就是处理结束后的表:

c语言如何将一个二维数组全为零_从零开始如何用python处理数据相关推荐

  1. c语言:将一个二维数组行和列的元素互换,存到另一个二维数组中。

    将一个二维数组行和列的元素互换,存到另一个二维数组中. 解:程序: #include<stdio.h> int main() { int i, j, a[2][3] = { {1,2,3} ...

  2. C语言指针表示二维数组的方法!_只愿与一人十指紧扣_新浪博客

    #include int main() {     int i,j;int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};     //int *p[3]={a[0],a[ ...

  3. C语言学习之将一个二维数组的行和列互换,存到另一个二维数组中

    C语言学习之将一个二维数组的行和列互换,存到另一个二维数组中 #include <stdio.h> int main(){int a[2][3]={{1,2,3},{4,5,6}}; // ...

  4. C语言指针和二维数组

    二维数组在概念上是二维的,有行和列,但在内存中所有的数组元素都是连续排列的,它们之间没有"缝隙".以下面的二维数组 a 为例: int a[3][4] = { {0, 1, 2, ...

  5. java 静态 二维数组 转化hashmap_将一个二维数组转换为 hashmap 哈希表

    /** * 将一个二维数组转换为 hashmap * * 如果省略 $val 参数,则转换结果每一项为包含该项所有数据的数组. * * @param array $arr * @param strin ...

  6. c语言字符串二维数组的动态分配应,C语言中动态分配二维数组复习过程.doc

    C语言中动态分配二维数组复习过程.doc C语言中动态分配二维数组在C中动态分配内存的,对于单个变量,字符串,一维数组等,都是很容易的.C中动态分配二维数组的方法,很少有C语言书中描述,我查找了有的C ...

  7. (c语言)编程输出二维数组中元素的最大值,要求用指针实现。

    (c语言)编程输出二维数组中元素的最大值,要求用指针实现. #include<stdio.h> #include<stdlib.h> #define N 6 //行数 #def ...

  8. java txt 二维数组_java 将一个二维数组存到txt文件里,然后再读取

    java 将一个二维数组存到txt文件里,然后再读取 mip版  关注:286  答案:3  悬赏:30 解决时间 2021-01-26 21:40 已解决 2021-01-26 04:05 将一个d ...

  9. 二维数组在c语言中的作用,C语言中的二维数组

    1.二维数组的定义和引用 一. 数据类型 数组名[常量表达式1][常量表达式2]; (1)假如有个二维数组array[n][m],则行下标的取值范围0~n-1 (2)列下标的取值范围0~m-1 (3) ...

最新文章

  1. 计算机考研专业课资料百度云,2020年考研专业课【初试】资料清单
  2. 集合框架(List的三个子类的特点)
  3. rust狗阳玩的什么游戏_微博搜索
  4. Android实现富文本时遇到的一些问题(2)字体效果的保存
  5. 代替Excel上载的方法
  6. CentOS 初体验八:传输本地文件到CentOS
  7. Linux CentOS6编译安装Python2.7
  8. 【转】【天道酬勤】 腾讯、百度、网易游戏、华为Offer及笔经面经
  9. sed 空格 制表符_您喜欢制表符还是空格?
  10. Android Camera(5)---Android Camera调用流程
  11. category与extension
  12. 190221每日一句
  13. 约束rmq_约束RMQ
  14. Transformer最新综述
  15. matlab 绘图颜色参考 linspace
  16. 在edge浏览器找不到internet选项?
  17. Windows 11 L2TP连接尝试失败,因为安全层在初始化与远程计算机的协商时遇到了一个处理错误
  18. 图书馆座位预约系统管理/基于微信小程序的图书馆座位预约系统
  19. 事关男女的三十二个绝妙比喻——男女关系
  20. 第二类换元法倒代换专项训练

热门文章

  1. Win10 64位安装SQL2000(个人版)
  2. C#接口的使用场合,接口应用
  3. 疯狂VirtualBox实战讲学录 以及 virtualbox完全学习手册 之我见
  4. 【API】短信通106端口验证短信的实现
  5. SBuild 0.2.0 发布,基于 Scala 的构建系统
  6. 转:如何把 SQL Server 的自增标志列清零
  7. Python框架篇之Django(Template基础:模板语法、过滤器filter)
  8. 华为云welink成像是反的_华为云Welink下载_华为云Welink 中文版 v6.6.6.0_Win10镜像官网...
  9. android auto note 8,三星Galaxy Note 8.0支持flash吗
  10. 盘点那些让人上火的提问方式(论如何让交流更高效)