c语言如何将一个二维数组全为零_从零开始如何用python处理数据
这是一篇教程类的博客,面向的是非计算机专业的同学,所以比较基础
1. 使用语言和包
这里我用的是python进行处理。So, why python?
Python语法相对简单,不是程序员的话,当做工具来用还是不错的。(如果是程序员,我建议还是C语言起步,充分了解相关概念和语法,其他的语言相比C语言都多多少少做了简化)
其次Python里面封装好的包有很多很多,所以很多操作,我们不需要自己写函数,大大减少了在写代码上花费的时间
比较安全,这里说的有点牵强,不过我也要强调一下。曾经在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处理数据相关推荐
- c语言:将一个二维数组行和列的元素互换,存到另一个二维数组中。
将一个二维数组行和列的元素互换,存到另一个二维数组中. 解:程序: #include<stdio.h> int main() { int i, j, a[2][3] = { {1,2,3} ...
- 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[ ...
- C语言学习之将一个二维数组的行和列互换,存到另一个二维数组中
C语言学习之将一个二维数组的行和列互换,存到另一个二维数组中 #include <stdio.h> int main(){int a[2][3]={{1,2,3},{4,5,6}}; // ...
- C语言指针和二维数组
二维数组在概念上是二维的,有行和列,但在内存中所有的数组元素都是连续排列的,它们之间没有"缝隙".以下面的二维数组 a 为例: int a[3][4] = { {0, 1, 2, ...
- java 静态 二维数组 转化hashmap_将一个二维数组转换为 hashmap 哈希表
/** * 将一个二维数组转换为 hashmap * * 如果省略 $val 参数,则转换结果每一项为包含该项所有数据的数组. * * @param array $arr * @param strin ...
- c语言字符串二维数组的动态分配应,C语言中动态分配二维数组复习过程.doc
C语言中动态分配二维数组复习过程.doc C语言中动态分配二维数组在C中动态分配内存的,对于单个变量,字符串,一维数组等,都是很容易的.C中动态分配二维数组的方法,很少有C语言书中描述,我查找了有的C ...
- (c语言)编程输出二维数组中元素的最大值,要求用指针实现。
(c语言)编程输出二维数组中元素的最大值,要求用指针实现. #include<stdio.h> #include<stdlib.h> #define N 6 //行数 #def ...
- java txt 二维数组_java 将一个二维数组存到txt文件里,然后再读取
java 将一个二维数组存到txt文件里,然后再读取 mip版 关注:286 答案:3 悬赏:30 解决时间 2021-01-26 21:40 已解决 2021-01-26 04:05 将一个d ...
- 二维数组在c语言中的作用,C语言中的二维数组
1.二维数组的定义和引用 一. 数据类型 数组名[常量表达式1][常量表达式2]; (1)假如有个二维数组array[n][m],则行下标的取值范围0~n-1 (2)列下标的取值范围0~m-1 (3) ...
最新文章
- 计算机考研专业课资料百度云,2020年考研专业课【初试】资料清单
- 集合框架(List的三个子类的特点)
- rust狗阳玩的什么游戏_微博搜索
- Android实现富文本时遇到的一些问题(2)字体效果的保存
- 代替Excel上载的方法
- CentOS 初体验八:传输本地文件到CentOS
- Linux CentOS6编译安装Python2.7
- 【转】【天道酬勤】 腾讯、百度、网易游戏、华为Offer及笔经面经
- sed 空格 制表符_您喜欢制表符还是空格?
- Android Camera(5)---Android Camera调用流程
- category与extension
- 190221每日一句
- 约束rmq_约束RMQ
- Transformer最新综述
- matlab 绘图颜色参考 linspace
- 在edge浏览器找不到internet选项?
- Windows 11 L2TP连接尝试失败,因为安全层在初始化与远程计算机的协商时遇到了一个处理错误
- 图书馆座位预约系统管理/基于微信小程序的图书馆座位预约系统
- 事关男女的三十二个绝妙比喻——男女关系
- 第二类换元法倒代换专项训练
热门文章
- Win10 64位安装SQL2000(个人版)
- C#接口的使用场合,接口应用
- 疯狂VirtualBox实战讲学录 以及 virtualbox完全学习手册 之我见
- 【API】短信通106端口验证短信的实现
- SBuild 0.2.0 发布,基于 Scala 的构建系统
- 转:如何把 SQL Server 的自增标志列清零
- Python框架篇之Django(Template基础:模板语法、过滤器filter)
- 华为云welink成像是反的_华为云Welink下载_华为云Welink 中文版 v6.6.6.0_Win10镜像官网...
- android auto note 8,三星Galaxy Note 8.0支持flash吗
- 盘点那些让人上火的提问方式(论如何让交流更高效)