day17 - csv文件和excel文件操作和面向对象编程(10.12)

1、python读取csv文件

python读取csv文件–读取csv文件
建立文件夹-ctrl+c–ctrl+v加入csv文件(取消)

utf-8-sig–>带签名的UTF-8–>有字节序标记(为保证读取的万无一失)

import csv
with open('resources/2018年北京积分落户数据.csv', 'r', encoding='utf-8-sig') as file:#方法一读取# content = file.readline()  #一行一行读取内容# while content:#     print(content, end='')#     content = file.readline() # 直到读取不到数据截止# 方法二读取(csv.reader方法读取)# delimiter参数默认是逗号,但是如果值不是用逗号分隔的就要重新指定# quotechar参数默认值是引号,但是如果值不是用引号包围的就要重新指定reader = csv.reader(file, delimiter=',', quotechar='"') # 阅读器 [观察文件内容分隔号是什么]for line in reader:print(type(line)) # 列表print(line)

2、python将数据写入csv文件

"""
将数据写入csv文件
"""
# utf-8-sig-->带签名的UTF-8-->有字节序标记(为保证读取的万无一失)
import csvwith open('resources/2018年北京积分落户数据.csv', 'a', encoding='utf-8-sig', newline='') as file:writer = csv.writer(file, delimiter=',')  # file文件对象 ,newline=''去掉新的多的空行writer.writerow(['6020', '陈来', '1981-06', '北京宝洁技术有限公司', '90.75'])  # 写一行writer.writerows([['6021', '陈来', '1981-06', '北京宝洁技术有限公司', '90.75'],['6022', '陈来', '1981-06', '北京宝洁技术有限公司', '90.75'],['6023', '陈来', '1981-06', '北京宝洁技术有限公司', '90.75']])  # 写多行数据

3、读csv文件写入excel文件中

练习:读csv写成excel
写excel需要三方库的支持,先安装pip install openpyxl 再导入openpyxl
pip list 查看已经装好的三方库
代码的标准顺序:先标准库 ->三方库 -> 代码,按照字母顺序写

# 1)自己练习
import csvimport openpyxl# 写excel需要三方库的支持,先安装pip install openpyxl 再导入openpyxl
# pip list 查看已经装好的三方库
# 代码的标准顺序:先标准库 ->三方库 -> 代码,按照字母顺序写
from openpyxl.styles import Font, Alignmentworkbook = openpyxl.Workbook()
sheet = workbook.activewith open('resources/2018年北京积分落户数据.csv', 'r', encoding='utf-8-sig') as file:reader = csv.reader(file, delimiter=',', quotechar='"')for line in reader: # 列表数据sheet.append(line) # sheet.append(序列)workbook.save('北京积分落户数据.xlsx')#2) teacher 答案workbook = openpyxl.Workbook()
sheet = workbook.active  # 获取第一个sheet1
sheet.title = '2018年'  # 修改第一个表格名称
with open('resources/2018年北京积分落户数据.csv', 'r', encoding='utf-8-sig') as file:reader = csv.reader(file, delimiter=',', quotechar='"')  # 分隔号,包裹号“。for line in reader:sheet.append(line)  # 追加一行数据
# 修改指定行的高度
sheet.row_dimensions[1].height = 40 #第一行维度从1开始,高度
# 修改指定列的宽度
col_width = {'A': 30,'B': 50,'C': 60,'D': 180,'E': 50
}
for key in col_width:sheet.column_dimensions[key].width = col_width[key]
#1) sheet.cell(1,1) # 第一行第一列单元格对象
#修改单元格的格式
for col in range(1, 6):sheet.cell(1, col).font = Font(name='微软雅黑', size=22, bold=True, color='0000FF') # 修改字体 ,颜色表sheet.cell(1, col).alignment = Alignment(horizontal='center', vertical='center') # 水平,垂直方向居中
workbook.save('resources/2018年北京积分落户数据.xlsx')
# 读取excel文件

4、*python读取excel文件数据

"""
04-python读取excel数据
"""
import openpyxl# 加载excel文件 --> workbook
workbook = openpyxl.load_workbook('resources/口罩销售数据.xlsx') # 加载工作簿
# 获取所有工作表的名字
print(workbook.sheetnames) # 获取表格名称
# 方法一
# workbook.worksheets[0] #第一个工作表
# 获取第一个工作表--》worksheet
sheet = workbook.worksheets[0]
print(sheet)# 两种方式获取单元格的数据
print(sheet.cell(3, 4).value) # 王大刀
print(sheet['D3'].value) # 王大刀# 单元格的范围
print(sheet.dimensions) #A1:G1000
# 获取表达的行数和列数
print(sheet.max_row, sheet.max_column)# 循环遍历所有的数据
# 1)方法一
for row in range(1, sheet.max_row+1):for col in range(1, sheet.max_column+1):print(sheet.cell(row, col).value, end='\t')print()
# 2)方法二
for row in range(2, sheet.max_row+1):for col in 'ABCDEF':print(sheet[f'{col}{row}'].value, end='\t')print()

5、面向对象编程

“”"
面向对象编程(OOP)(询问之后的内容,每天的内容)
用对象的概念将数据和操作数据的函数从逻辑上组织成一个整体
在面向对象的世界里,我们要解决任何问题都是通过先创建对象,然后给对象发出消息。

1.对象 - 接收消息的实体 —> 具体概念
1)一切皆为对象
2)每个对象都是独一无二的
3)对象都有静态特征(属性)和动态特征(行为)
4)对象一定属于某个类
2.类 - 对象的蓝图和模板 —> 抽象概念
1)(每个单词首字母大写)
2)写在类里面的函数叫方法
3)def init(self):初始化,self对象

*面向对象编程的实施步骤:
1.定义类
1)数据抽象:给出对象的静态特征–>属性
2)行为抽象:给出对象的动态特征–>行为
2.创建对象—> 构造器语法是类名()
3.给对象发消息 对象.

“”"
“”"
类:笔
对象:我黑色签字笔
属性(静态特征):(名词)形状(长方形圆筒状),笔芯(黑色笔芯,尖头)0.35,厂家,晨光的。
行为(动态特征):书写(动词)
“”"

第一步:定义类

class Rectangle:"""矩形"""# 静态属性def __init__(self, width, height): # (矩形对象,属性)"""初始化方法:param width: 矩形的宽度:param height: 矩形的高度"""self.width = widthself.height = height # 给矩形对象初始化属性,指定高度(数据抽象)# 动态特征def perimeter(self):"""计算周长"""return (self.width+self.height) * 2 # 周长def area(self):"""计算面积"""return self.width * self.height

第二步:创建对象—> 构造器语法是类名()

rect = Rectangle(width=3, height=5) # 位置传参,矩形对象 自动调用__init__

第三步:给对象发消息 对象.

print(f'矩形的周长:{ rect.perimeter()}') # 矩形的周长:16
print(f'矩形的面积:{ rect.area()}') # 矩形的面积:15

练习1:定义一个学生类:姓名。年龄。吃饭,玩耍,学习

class Student:"""学生"""def __init__(self, name, age):"""初始化方法:param name:姓名:param age: 年龄"""self.name = nameself.age = agedef eat(self):"""吃饭"""print(f'{self.name}正在吃饭')def play(self):"""玩耍"""print(f'{self.name}正在玩耍')def study(self, course_name):![请添加图片描述](https://img-blog.csdnimg.cn/12ae82dae3a54a97b09433d1f93c36bc.jpg?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAQTE2NjA2MDEyMDAw,size_20,color_FFFFFF,t_70,g_se,x_16)"""学习:param course_name: 课程名称:return:"""print(f'{self.name}正在学习{course_name}')
stu1 = Student('陈来', 20) # 位置传参
stu2 = Student('小兰', 17)stu1.play()
stu1.eat()
stu2.study('python学习')

练习2:

面向对象编程:练习2:游泳池圆的,半径未知,外面有一个同心圆过道(宽度3m),装修每平方米28.5,围墙每米38.2
两个对象
三步走:定义类->创建对象->通过给对象发消息解决问题

# 自己的练习
import mathclass Circle:def __init__(self, r):self.r = rdef guodao(self):t1 = (3.14*(self.r+3)**2 - 3.14*(self.r**2))*28.5return t1def weiqiang(self):t2 = 2*3.14*(self.r+3)*38.2return t2rect = Circle(r=3)print(f'装修过道的花销:{rect.weiqiang()}元')
print(f'装修围墙的花销:{rect.guodao()}元')# teacher 答案
class Circle:def __init__(self, radius):self.radius = radiusdef perimeter(self):return 2 * math.pi * self.radiusdef area(self):return math.pi * self.radius ** 2r = float(input('请输入游泳池的半径:'))
c1, c2 = Circle(r), Circle(r+3)
fence_price = c2.perimeter() * 38.2
aisle_price = (c2.area() - c1.area()) * 28.5
print(f'过道的造价是:{aisle_price:.2f}元')
print(f'围墙的造价是:{fence_price:.2f}元')


练习3:

练习3:定义类描述数字时钟:时分秒,行为让它走起来,显示时间
三步走:定义类(数据抽象,行为抽象)->创建对象->通过给对象发消息解决问题
变量,函数的命名:snake_case
类命名:CamelNotation
多总结多复盘,英语,打字速度
作业1倒计时计时器,倒计时1分钟。00:00:00结束

import os
import timeclass Clock:def __init__(self, hour=0, minute=0, second=0):self.hour = hourself.minute = minuteself.second = seconddef go(self):self.second += 1if self.second == 60:self.second = 0self.minute += 1if self.minute == 60:self.minute = 0self.hour += 1if self.hour == 24:self.hour = 0def show(self):return f'{self.hour}时,{self.minute}分,{self.second}秒'# rect = Clock(2, 4, 20)
#
# while True:
#     print(f'时间显示:{rect.show()}')
#     time.sleep(2)
#     rect.go()# teacher 答案class Clock:def __init__(self, hour=0, minute=0, second=0, mode_12=False):"""初始化方法:param hour: 时:param minute: 分:param second: 秒"""self.hour = hourself.minute = minuteself.sconde = secondself.mode_12 = mode_12 #12小时def show(self): #def show(self,mode_12=False):clock.show(True)"""显示时间"""# 07:01:02if self.mode_12:if self.hour <12:return f'{self.hour:0>2d}:{self.minute:0>2d}:{self.sconde:0>2d} AM'else:hour = self.hour -12 if self.hour >12 else self.hour #三目return f'{hour:0>2d}:{self.minute:0>2d}:{self.sconde:0>2d} PM'return f'{self.hour:0>2d}:{self.minute:0>2d}:{self.sconde:0>2d}'def run(self):"""走字"""self.sconde += 1if self.sconde == 60:self.sconde = 0self.minute += 1if self.minute == 60:self.minute = 0self.hour += 1if self.hour == 24:self.hour = 0clock = Clock(12,12,12,mode_12=True)
while True:# 通过os模块的system函数调用系统命令(Terminal终端)# 清屏:windows->cls/macOS--># os.system('clear')print(clock.show())time.sleep(1)clock.run()

最后文件附录

1、优化导入工具

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dXRCvKv0-1634037226419)(C:\Users\z\Desktop\tupian\10.12\2.png)]

2、颜色编码表

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1RmQXax4-1634037226421)(C:\Users\z\Desktop\tupian\10.12\6.png)]
if self.hour == 24:
self.hour = 0

clock = Clock(12,12,12,mode_12=True)
while True:
# 通过os模块的system函数调用系统命令(Terminal终端)
# 清屏:windows->cls/macOS–>
# os.system(‘clear’)
print(clock.show())
time.sleep(1)
clock.run()


### 最后文件附录1、优化导入工具![请添加图片描述](https://img-blog.csdnimg.cn/0dfd082e97174c24adb55754b48d1ec2.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAQTE2NjA2MDEyMDAw,size_11,color_FFFFFF,t_70,g_se,x_16)2、颜色编码表![请添加图片描述](https://img-blog.csdnimg.cn/0efe30955da14c24af783f0f8d2777d4.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAQTE2NjA2MDEyMDAw,size_20,color_FFFFFF,t_70,g_se,x_16)

day17-csv文件excel文件操作和面向对象编程相关推荐

  1. C# 读取CSV和EXCEL文件示例

    我们习惯了直接连到数据库上面读取数据表的数据内容: 如果有一天我们需要读取CSV,EXCEL文件的内容的时候,可不可以也像读数据表的方式一样呢?当然可以,使用OleDB ADO.NET是很简单的事情 ...

  2. php导出csv_原生PHP实现导出csv格式Excel文件的方法示例【附源码下载】

    本文实例讲述了原生PHP实现导出csv格式Excel文件的方法.分享给大家供大家参考,具体如下: 效果图 源码分析 index.php require_once "./Export.php& ...

  3. php导出1万条数据excel_PHP快速导出百万级数据到CSV或者EXCEL文件

    前言: 很多时候,因为数据统计,我们需要将数据库的数据导出到Excel等文件中,以供数据人员进行查看,如果数据集不大,其实很容易:但是如果对于大数集的导出,将要考虑各种性能的问题,这里以导出数据库一百 ...

  4. 数据完整性测试之【二】导出的CSV、Excel文件和数据库表里的记录

    前面的分享 接口返回值和数据库表里的记录[一]说过,把前端页面显示的所有数据明细导出为CSV文件,将其和数据库表里的数据做校验,这儿说下我对导出的CSV.Excel的处理: 个人博客:https:// ...

  5. R—读取数据(导入csv,txt,excel文件)

    R-读取数据(导入csv,txt,excel文件) 转自:http://www.cnblogs.com/zhangduo/p/4440314.html 导入CSV.TXT文件 read.table函数 ...

  6. Python操作Json、Csv、Excel文件

    一.Python操作Json文件 import json# json中使用双引号 data={'aa':11,'bb':22,'cc':'33' } # 字典转化json print(json.dum ...

  7. csv和excel文件操作

    csv文件读操作 什么是csv文件 csv文件叫逗号分隔值文件 每一行内容是通过逗号来区分出不同的列 csv文件可以直接通过excel打开,以行列的形式保存和显示数据,但是相对excel文件,它只能存 ...

  8. 18 - csv与Excel文件的读写操作

    Day 18 补充:虚拟环境 1.系统环境: 安装Python就可以为计算机提供一个python的体统环境 2.虚拟环境 程序员根据自己的需要创建的Python环境 能够提供虚拟环境的前提:存在系统环 ...

  9. python与r语言处理excel数据_R语言 | 读写txt、csv、excel文件

    前段时间看到plotnine库(封装的R语言ggplot2)作的图太美了,有点想重新拾起R语言^_^ R语言代码略带凌乱,讲真的还是更喜欢Python代码简洁.不过好几年不琢磨R语言,对R语言代码的凌 ...

最新文章

  1. python moviepy 特效编辑
  2. 阿里云产品搭建web应用梳理
  3. 《 Spring1之第二次站立会议(重发)》
  4. 【UEditor】介绍
  5. 15、四大组件--BroadcastReceiver
  6. 探索Apache Camel Core –文件组件
  7. 路由器上的usb接口有什么用_路由器的USB接口,非常强大的功能,教您轻轻松松玩转,太实用了...
  8. 从土地利用规划到国土空间规划的一些思考
  9. Operation not permitted - /usr/bin/xcodeproj
  10. 15. Provide access to raw resources in resouce-managing classes
  11. java 内部邮件_java – 来自内部存储的电子邮件
  12. 自动控制原理1---自动控制原理基本概念
  13. idea手动执行maven命令的三种方式
  14. zigbee芯片cc2430资料
  15. 转录组分析_20个必须知道的转录组知识点!
  16. 威漫哨兵机器人_漫威:哨兵机器人天下无敌?这几位变种人就不把他们放在眼里...
  17. python当行刷新
  18. 小米6自动重启android,小米6充电重启怎么办?小米6充电自动重启解决方法介绍...
  19. A - 娜娜梦游仙境系列——诡异的钢琴
  20. python2和python3 with open as f写中文乱码

热门文章

  1. 微信小程序中进行公共数据的存储使用
  2. cmd输入cl提示不是内部命令
  3. Kubernetes联合创始人Brendan Burns:K8s让企业上云更容易
  4. TensorFlow学习——入门篇
  5. fpga nvme 寄存器
  6. 基于java的人力资源管理系统_基于JavaWeb的企业人力资源管理系统的设计与实现...
  7. 大一c语言考试题信阳师范学院,zhaodapeng6
  8. k8s之hpa v2beta2
  9. 使用这个传感器模块,你也可以监测你身边的空气质量了
  10. 这就是搜索引擎_这就是搜索引擎如何增强种族主义