日常工作中表格处理时非常令人头疼的一个部分,

概念

CSV (Comma Separated Values),即逗号分隔值(也称字符分隔值,因为分隔符可以不是逗号),是一种常用的文本 格式,用以存储表格数据,包括数字或者字符。很多程序在处理数据时都会碰到csv这种格式的文件,它的使用是比 较广泛的(Kaggle上一些题目提供的数据就是csv格式),csv虽然使用广泛,但却没有通用的标准,所以在处理csv 格式时常常会碰到麻烦,幸好python内置了csv模块。下面简单介绍csv模块中最常用的一些函数。

读表格

import csv
from collections import namedtuple
with open('accessinfo_base.csv',encoding='utf8') as f:f_csv = csv.reader(f)headers = next(f_csv)print('表头',headers)for row in f_csv:print(row)
## named tuple
with open('accessinfo_base.csv',encoding='utf8') as f:f_csv = csv.reader(f)headers = next(f_csv)Row = namedtuple('Row',headers)for r in f_csv:row = Row(*r)print(row,row.role,row.area)## 读取到字典去中
with open('accessinfo_base.csv',encoding='utf8') as f:f_csv = csv.DictReader(f)for r in f_csv:print(r)

写表格

 ## 读取到字典去中
with open('accessinfo_base.csv',encoding='utf8') as f:f_csv = csv.DictReader(f)for r in f_csv:print(r)## 写入csv,先创建一个csv的writer对象
with open('test1.csv', 'w', encoding='utf8') as f:headers = ['ip', 'area', 'role']rows = [['127.0.0.1', 'A', 'AS'], ['127.0.0.1', 'A', 'AS'], ['127.0.0.1', 'A', 'AS'], ['127.0.0.1', 'A', 'AS']]csv_writer = csv.writer(f)csv_writer.writerow(headers)csv_writer.writerows(rows)
# newline很重要,不然会出现间隔的空白行,w代表写文件。
with open('test2.csv', 'w', encoding='utf8',newline='') as f:headers = ['ip', 'area', 'role']rows = [['127.0.0.1', 'A', 'AS'], ['127.0.0.1', 'A', 'AS'], ['127.0.0.1', 'A', 'AS'], ['127.0.0.1', 'A', 'AS']]csv_writer = csv.writer(f,delimiter='t')csv_writer.writerow(headers)csv_writer.writerows(rows)## 字典的方式写入
with open('test3.csv', 'w', encoding='utf8',newline='') as f:headers = ['ip', 'area', 'role']rows = [{'ip': '12','area': 'a','role': 'as'},{'ip': '12','area': 'a','role': 'as'},{'ip': '12','area': 'a','role': 'as'},]csv_writer = csv.DictWriter(f,headers)csv_writer.writeheader()csv_writer.writerows(rows)

xlrd

读Excel文件

支持xls、xlsx

import xlrd
def print_excel(filePath):myWbook = xlrd.open_workbook(filePath)mySheet = myWbook.sheet_by_index(0)# 也可以使用函数mySheet = myWbook.sheet_by_name('sheet1')nrows = mySheet.nrows # 行数ncols = mySheet.ncols # 列数i = 1err_num=0while i < nrows:try:print(mySheet.row_values(i))a = mySheet.row(i)[0].valueb = mySheet.row(i)[1].valuec = mySheet.row(i)[2].valueprint(a,b,c)i = i + 1except Exception as e:print(e)err_num = err_num + 1i = i + 1return err_num  # success def print_excel_2(filePath):myWbook = xlrd.open_workbook(filePath)mySheet = myWbook.sheet_by_index(0)# 也可以使用函数mySheet = myWbook.sheet_by_name('sheet1')cell_type = mySheet.cell(1,2).ctype## 1为字符串、2为数字 3为日期print(cell_type)#取某个位置的值print(mySheet.cell(1,1).value)print(mySheet._cell_values)##读取整个cell   if __name__ == '__main__':print_excel_2('accessinfo_base.xls')

pandas

pandas是一款数据处理的工具,基于Numpy去编写的。提供了大量快捷处理数据的函数和方法。

本次我使用它在读写表格的一些便捷的方法。

读表格

首先可以先创建一个excel文件当作实验数据,名称为example.xlsx,内容如下:

读取并打印

注意 sheet名要对应起来。

# coding:utf-8
import pandas as pddata = pd.read_excel('example.xlsx', sheet_name='Sheet1')
print(data)

这里使用了read_excel()方法来读取excel,来看一个read_excel()这个方法的API,这里只截选一部分经常使用的参数:

pd.read_excel(io, sheet_name=0, header=0, names=None, index_col=None, usecols=None)

这里主要参数为io,sheet_name,header,usecols和names

io:excel文件路径

sheet_name:返回指定的sheet,如果将sheet_name指定为None,则返回第一页,如果需要返回多个表,可以将sheet_name指定为一个列表,例如['sheet1', 'sheet2']

header:指定数据表的表头,默认值为0,即将第一行作为表头。如果表中无表头,此值应为None,对应的表头会用索引表示,也可搭配names,指定表头。

usecols:读取指定的列,例如想要读取第一列和第二列数据:

pd.read_excel("example.xlsx", sheet_name=None, usecols=[0, 1])

index_col 指定某列为索引

遍历所有行

# coding:utf-8
import pandas as pddata = pd.read_excel('example.xlsx', )
print(data)
for index, row in data.iterrows():print(row['name'], row['age'], row['gender'])print(row[0], row[1], row[2])

以转换dict的list的方式读取

# coding:utf-8
import pandas as pddata = pd.read_excel('example.xlsx', )
data = data.to_dict(orient='records')
print(data)

写表格

# coding:utf-8
import pandas as pdraw_data = [{'name': 'John', 'age': 30, 'gender': 'male'}, {'name': 'Mary', 'age': 22, 'gender': 'female'}, {'name': 'Smith', 'age': 32, 'gender': 'male'}]
data = pd.DataFrame(raw_data)
print(data)
data.to_excel('example_output.xlsx', sheet_name='Test01', index=False, header=True)

数据的计算

我们只写数据计算部分,不去写读取和写入的部分。

有时候我们需要处理表格中的内容,比如根据表格中的多项字段生成一个新的字段,得到一个新的结论。

比如有时候考试题出的太难了,大家都不及格,我们想让大家都及格,可以这样写。我们没有采用乘以10开根号的办法,我们简单点。

import pandas as pdraw_data = [{'name': 'John', 'score': 30, 'gender': 'male'}, {'name': 'Mary', 'score': 22, 'gender': 'female'},{'name': 'Smith', 'score': 32, 'gender': 'male'}]
data = pd.DataFrame(raw_data)
print(data)def jige(row):print(row)if row['score'] < 60:return 60return row['score']data['new_score'] = data.apply(jige, axis=1)
print(data)

这个代码的读取和写入我们省略了,大家可以自己补充上。

通过在数据里调用我们的函数,我们成功让大家都及格了。

我们想像下运维中的场景,比如根据端口类型、描述得出某些结论即一个新的字段。

计算此端口上是否有crc err数,甚至可以根据以往记录去计算crc的增长。

判断某些指标是否超过阈值,得出一个个的结论,即很多字段,加之组合生成一个巡检报告。

真的是抛砖。

还是希望分享一些方法,大家学会点基础的后,自己开脑洞!

好了关于Python的入门、读写文件、表格操作我们就讲完了!欢迎大家关注公众号,后续的分享会紧贴网络运维。

后续我们会聚焦网络运维,讲解一些能够提高我们运维效率的工具、技术、代码等等,讲解一些在云计算时代所需要了解的开源组件。

大家有什么想了解的也可以私信我,我会分享我所了解的部分~

用dict读取和写入表格_用Python快速处理表格,让你快人一步两步三四部相关推荐

  1. 如何用python生成表格_用 Python 生成 HTML 表格

    在 邮件报表 之类的开发任务中,需要生成 HTML 表格. 使用 Python 生成 HTML 表格基本没啥难度, for 循环遍历一遍数据并输出标签即可. 如果需要实现合并单元格,或者按需调整表格样 ...

  2. python自动化读取和写入文件_基于Python的接口自动化实战-基础篇之读写配置文件...

    引言 在编写接口自动化测试脚本时,有时我们需要在代码中定义变量并给变量固定的赋值.为了统一管理和操作这些固定的变量,咱们一般会将这些固定的变量以一定规则配置到指定的配置文件中,后续需要用到这些变量和变 ...

  3. python10分钟处理表格_使用python对excel表格处理的一些小功能

    python对excel表格处理的一些小功能 功能概览pandas库的一些应用文件读入计算表格中每一行的英文单词数简单用textblob进行自然语言情感分析判断一行中是不是有两列值都与其他行重复(可推 ...

  4. 用python处理excel表格_使用Python处理excel表格(openpyxl)及表格中的中文处理

    现在有个小任务,需要处理excel中的数据.其实就是简单的筛选,excel玩的不熟练,而且需要处理的表有70多个,于是想着写个脚本处理一下吧. python中的openpyxl包可以轻松实现读写exc ...

  5. python提取word所有表格_用Python提取 Word 表格内容

    一个公司有若干个部门,一个部门有若干个员工,每一个员工填写一份自己的信息(Word 版),然后录入系统,Word 表格模板如下: 填入内容如: 首先我们需要做的就是把数据提取出来,之后我们就可以对数据 ...

  6. word表格分开快捷键_在Word 表格的编辑中,快速拆分表格应按快捷键为______。

    [单选题]在Word文档中,如果要指定每页中的行数,可以通过_____进行设置. [简答题]要求把任务点的所有课程笔记都上传,拍照上传. [单选题]在Word文档中,有一个段落的最后一行只有一个字符, ...

  7. python读取pdf表格_【Python 库】解析PDF文本及表格——pdfminer、tabula、pdfplumber 的用法及对比...

    pdf 是个异常坑爹的东西,有很多处理 pdf 的库,但是没有完美的. 一.pdfminer3k pdfminer3k 是 pdfminer 的 python3 版本,主要用于读取 pdf 中的文本. ...

  8. c语言读取excel表格_利用pandas处理excel表格

    这不是一篇详细介绍pandas的文章,只是我在利用python处理excel表格时找到的一些临时方案,为了避免忘记,记录在这里,也可能对你有帮助. pandas在对excel处理上使用的是xlrd和x ...

  9. pythonexcel汇总_用python汇总excel表格数据-怎样用python遍历表格中的内容

    如何用python将数据写入excel表格 # 需 xlrd-0.9.2  xlutils-1.7.1 这两个模块 from xlwt import Workbook, Formula import  ...

最新文章

  1. 十分钟理解Java泛型擦除
  2. 1024程序员节 继续薅羊毛
  3. 软件工程方法论对我们开发软件有多大用处?谈谈你的看法。
  4. 牛客网7-教417题解
  5. 用ASM编写一个简单的Windows Shellcode思路总结
  6. 【solr基础教程之二】索引
  7. 酒店房间和 C++ 局部变量的作用域
  8. gdc服务器故障输入信号超出范围,H1Z1信号输入超出范围 | 手游网游页游攻略大全...
  9. mysql5.6.28安装_mysql5.6.28源码安装
  10. Digits of Factorial LightOJ - 1045(数学题?)
  11. Silverlight中使用MVVM
  12. Hive 基础及安装
  13. Hive查看执行计划
  14. 【转】el-table复选框分页记忆-非:reserve-selection=true模式
  15. java 快速回收_快速了解JAVA垃圾回收机制
  16. 手把手教你快速解除vivo手机高通系列屏幕锁(附短接拆机小视频)
  17. 磁珠 符号_贴片磁珠规格
  18. 优秀网页设计:35个吸引眼球的精美作品集网站
  19. 【财经期刊FM-Radio|2020年11月19日】
  20. GOOGLE工具大全+搜索引擎免费登陆入口

热门文章

  1. 使用qsort对不连续的内存数据排序_常见的内排序和外排序算法
  2. c++读取图片_Pytorch读取,加载图像数据(一)
  3. easyui根据select下拉框内容更新表单内容_10、表单与v-model
  4. python3.7怎么设置中文_解决 Bug · Python3.7.3官方文档 简体中文 · 看云
  5. P1135 奇怪的电梯(BFS/DFS)
  6. 单机和分布式场景下,有哪些流控方案?
  7. 为了在全球“买买买”,阿里工程师自研了一套海外HR系统
  8. SQL中除数为0处理情况演示
  9. 前端性能优化-减少HTTP请求数
  10. java定时执行一段代码