day18csv和excel

01csv 文件读操作

1.什么是csv文件

  • csv文件叫逗号分隔值文件 - 每一行内容是通过逗号来区分出不同的列
  • csv文件可以直接通过excel打开,以行列的形式保存和显示数据,但是相对excel文件,它只能存储数据,不能保存公式和函数。

2.csv文件

import csv

1)创建打开csv文件

f = open('files/电影.csv', 'r', encoding='utf-8')

2)创建reader获取文件内容

  • csv.reader(文件对象) - 获取文件内容返回一个迭代器,并且以列表为单位返回每一行内容
  • csv.DictReader(文件对象) - 获取文件内容返回一个迭代器,并且以字典为单位返回第2行开始的每一行内容(字典的键是第一行内容)
  • 补:round(数字, 小数位数) - 让数字保留指定位数的小数
# reader1 = csv.reader(f)
# print(list(reader1))

reader2 = csv.DictReader(f)
print(list(reader2))

f.close()
# 练习:计算拉钩数据中,各个城市数据分析岗位的平均薪资
# 获取文件内容
from re import findall
with open('files/lagou.csv', encoding='utf-8') as f:
    reader = csv.DictReader(f)
    # 处理数据
    cities = {}
    for job in reader:
        c = job['city']
        m = job['salary']           # '8k-16k'
        result = findall(r'(\d+)k-(\d+)k', m)            # [(8, 16)]  ->  (8, 16)
        if not result:
            continue
        start, end = result[0]

        moneys = cities.get(c, [])
        moneys.append((int(start) + int(end))/2)
        cities[c] = moneys

    # round(数字, 小数位数)       -   让数字保留指定位数的小数
    for key in cities:
        print(key, round(sum(cities[key]) / len(cities[key]), 2))

02 csv文件写操作

1.csv文件写操作

1)打开文件

f = open('files/data.csv', 'w', encoding='utf-8')

2)创建writer对象

  • a. csv.writer(文件对象) - 创建writer对象,这个对象在写入数据的时候一行对应一个列表

  • b. csv.DictWriter(文件对象, 键列表) - 创建writer对象,以字典为单位写入数据

# a. =====================以列表为单位写入一行内容==========================
writer = csv.writer(f)

# 一次写入一行内容
writer.writerow(['姓名', '出生日期', '性别', '电话'])
writer.writerow(['小明', '1999-9-9', '男', '110'])

# 一次写入多行内容
writer.writerows([
    ['小花', '2000-3-24', '女', '120'],
    ['张三', '19998-7-5', '男', '119']
])

# b.=====================以字典为单位写入一行内容==========================
writer = csv.DictWriter(f, ['姓名', '出生日期', '性别', '电话'])

# 写入文件头(将字典的键写入到文件开头)
writer.writeheader()

# 一次写入一行内容
writer.writerow({'姓名': 'xiaoming', '出生日期': '1999-9-9', '电话':'110', '性别': '男'})
# 一次写入多行内容
writer.writerows([
    {'姓名': 'xiaohua', '出生日期': '1999-9-9', '电话':'110', '性别': '男'},
    {'姓名': 'zhangsan', '出生日期': '1999-9-9', '电话':'110', '性别': '男'}
])

03虚拟环境

1. 系统环境 - 安装Python就可以为计算机提供一个Python的系统环境
2. 虚拟环境 - 程序员根据需要自己创建的Python环境
  • 能够创建虚拟环境的前提:存在系统环境
3. 环境的作用:
  • 1)提供Python解释器
  • 2)提供第三方库
    虚拟环境的存在可以让第三方库根据类别或者项目分开管理。
4. 使用虚拟环境的建议:
  • 1)工作的时候:一个项目一个虚拟环境,并且将虚拟环境直接放在项目中
  • 2)学习的时候:一类项目一个虚拟环境,不同类别的虚拟环境全部放在一个地方
5.怎么创建虚拟环境
  • 1)使用Pycharm创建
  • 2)使用指令创建

04excel文件读操作

import openpyxl

1. 认识excel文件

工作簿: 一个excel文件就是一个工作簿
工作表:一个工作簿中可以有多个工作表(至少一个)
单元格:单元格是excel文件保存数据的基本单位
行号和列号:可以确定单元格位置

2. 获取excel文件内容

1)打开excel文件创建工作簿对象
  • openpyxl.open(excel文件路径)
  • openpyxl.load_workbook(excel文件路径)
# workbook = openpyxl.open('files/三国人物数据.xlsx')
workbook = openpyxl.load_workbook('files/三国人物数据.xlsx')

# 获取工作簿中所有的工作表的表名
result = workbook.sheetnames
print(result)       # ['全部人物数据', '三个国家的武力', '三个国家武将的武力', '三国武将数据', '三国文官数据']
2)获取工作表
  • 工作簿对象.active - 获取活跃表(选中的表)
  • 工作簿对象[工作表名称] - 获取指定名字对应的工作表
  • 工作簿对象.sheetnames - 获取工作簿中所有的工作表的表名
sheet1 = workbook.active
print(sheet1)

sheet2 = workbook['三国武将数据']
print(sheet2)
3)获取单元格
  • 工作表对象.cell(行号, 列号)
cell1 = sheet2.cell(8, 1)
cell2 = sheet2.cell(12, 1)
print(cell1, cell2)
4)获取单元格内容
  • 单元格对象.value
print(cell1.value)
print(cell2.value)
5)获取最大行号和最大列号(保存了数据的有效行和有效列)
  • 工作表对象.max_row
  • 工作表对象.max_column
print(sheet2.max_row)
print(sheet2.max_column)
# 获取第一列所有数据
column1 = []
for row in range(1, sheet2.max_row+1):
    cell = sheet2.cell(row, 1)
    column1.append(cell.value)

print(column1)

# 获取第1列到第3列所有的数据
for col in range(1, 4):
    column = []
    for row in range(1, sheet2.max_row+1):
        cell = sheet2.cell(row, col)
        column.append(cell.value)
    print(column)

05excel文件写操作

注意:不管是以什么样的方式对excel进行写操作,操作完成后必须保存。

1. 新建工作簿

1)新建工作簿对象:openpyxl.Woekbook()
  • workbook = openpyxl.Workbook()
2)保存:工作簿对象.save(文件路径)
  • workbook.save(‘files/student.xlsx’)
补:os.path.exists(文件路径) - 判断指定文件是否存在,存在返回True,不存在返回False
# 方法一:
try:
    workbook = openpyxl.open('files/student2.xlsx')
except FileNotFoundError:
    workbook = openpyxl.Workbook()
    workbook.save('files/student2.xlsx')

# 方法二:
import os
# os.path.exists(文件路径)  -  判断指定文件是否存在,存在返回True,不存在返回False
if os.path.exists('files/student2.xlsx'):
    workbook = openpyxl.open('files/student2.xlsx')
else:
    workbook = openpyxl.Workbook()
    workbook.save('files/student2.xlsx')

2.工作表的写操作

1)新建工作表:工作簿对象.create_sheet(表名, 下标)
workbook.create_sheet()
workbook.create_sheet('Python')
workbook.create_sheet('Java', 0)
workbook.save('files/student2.xlsx')
# 实际中的新建表:没有的时候才新建,有的时候直接打开
if 'Python' in workbook.sheetnames:
    sheet = workbook['Python']
else:
    sheet = workbook.create_sheet('Python')
    workbook.save('files/student2.xlsx')
2)删除工作表:工作簿对象.remove(工作表对象)
workbook.remove(workbook['Sheet1'])
workbook.save('files/student2.xlsx')
# 实际中删除表:存在的时候才能删
if 'Sheet1' in workbook.sheetnames:
    workbook.remove(workbook['Sheet1'])
    workbook.save('files/student2.xlsx')

3.单元格的写操作:单元格对象.value = 数据

java_sheet = workbook['Java']
java_sheet.cell(1, 3).value = '电话'
java_sheet.cell(2, 1).value = None
java_sheet.cell(4, 2).value = 'stu003'

workbook.save('files/student2.xlsx')
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值