什么是csv文件
csv文件叫逗号分隔文件。每一行内容是通过逗号来区分出不同的列。
csv文件可以直接通过excel打开,以行列的形式保存和显示数据,但是对于excel文件,它只能存储数据,不能保存公式和函数。
csv读操作
import csv
1)创建打开csv文件
#自己关闭文件
文件对象=open()
操作文件
文件对象.close()
# 自动关闭文件
with open() as 文件对象:
操作文件
f = open('电影.csv','r',encoding='utf-8')
2)创建reader获取文件内容
csv.reader(文件对象) #获取文件内容返回一个迭代器,并且以列表为单位返回每一行内容
csv.DictReader(文件对象) #获取文件内容返回一个迭代器,并且以字典为单位返回第2行开始的每一行内容(字典的键是第一行内容)
🥟计算拉钩数据中,各个城市数据分析岗位的平均薪资。
# 获取文件内容
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))
csv写操作
import csv
1)打开文件
f = open('data.csv','w',encoding='utf-8')
2)创建writer对象
csv.writer(文件对象) 创建writer对象,这个对象在写入数据的时候一行对应一个列表
csv.DictWriter(文件对象,键列表) 创建writer对象,以字典为单位写入数据
🥟以列表为单位写入一行内
writer = csv.writer(f)
# 一次写入一行内容
writer.writerow(['姓名', '出生日期', '性别', '电话'])
writer.writerow(['小可', '1992-9-29', '男', '110'])
# 一次写入多行内容
writer.writerows([
['小米', '2010-4-27', '女', '120'],
['张三', '1998-7-5', '男', '119']
])
🥟以字典为单位写入一行内容
writer = csv.DictWriter(f, ['姓名', '出生日期', '性别', '电话'])
# 写入文件头(将字典的键写入到文件开头)
writer.writeheader()
# 一次写入一行内容
writer.writerow({'姓名': 'xiaoming', '出生日期': '1979-9-19', '电话':'110', '性别': '男'})
# 一次写入多行内容
writer.writerows([
{'姓名': 'xiaohua', '出生日期': '1999-9-9', '电话':'110', '性别': '男'},
{'姓名': 'zhangsan', '出生日期': '1999-9-9', '电话':'110', '性别': '男'}
])
系统环境
安装python就可以为计算机提供一个python的系统环境
虚拟环境
程序员根据需要自己创建的python环境。
能够创建虚拟环境的前提:存在系统环境。
环境的作用
1)提供python的解释器
2)提供第三方库
虚拟环境的存在可以让第三方库根据类别或者项目分开管理。
使用虚拟环境的建议
1)工作的时候:一个项目一个虚拟环境,并且将虚拟环境直接放在项目中。
2)学习的时候:一类项目一个虚拟环境,不同类别的虚拟环境放一起。
怎么创建虚拟环境
1)使用Pycharm创建
打开设置页面-》files-》settings-》Project-》Python Interpreter
2)使用指令创建
认识excel文件
🧊工作簿:一个excel文件就是一个工作簿
🧊工作表:一个工作簿中可以有多个工作表(至少一个)
🧊单元格:单元格是excel文件保存数据的基本单位
🧊行号和列号:可以确定单元格位置
获取excel文件内容
1)打开excel文件,创建工作簿对象
openpyxl.open(excel文件路径)
openpyxl.load_workbook(excel文件路径)
获取工作簿中所有的工作表的表名sheetnames
result= workbook.sheetnames
print(result)
2)获取工作表
工作簿对象.active 获取活跃表(选中的表)
工作簿对象[工作表名称] 获取指定名字对应的工作表
sheet1 = workbook.active
sheet2 = workbook['三国武将数据']
3)获取单元格
工作表对象.cell(行号,列号)
cell1=sheet2.cell(8,1)
print(cell1)
4)获取单元格内容
单元格对象.value
print(cell1.value)
5)获取最大行号和列号(保存了数据的有效行和有效列)
工作表对象.max_row()
工作表对象.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)
excel写文件
注意:不管以什么样的方式对excel进行写操作,操作完成后必须保存。
3.1 新建工作簿
1)新建工作簿对象
workbook=openpyxl.Workbook()
2)保存
工作簿对象.save(文件路径)
实际中新建工作簿的时候需要先判断工作簿对应的文件是否已经存在,存在就不需要新建,不存在才新建。
# 方法一:
try:
workbook = openpyxl.open('student2.xlsx')
except FileNotFoundError:
workbook = openpyxl.Workbook()
workbook.save('student2.xlsx')
import os
# os.path.exists(文件路径) - 判断指定文件是否存在,存在返回True,不存在返回False
if os.path.exists('student2.xlsx'):
workbook = openpyxl.open('student2.xlsx')
else:
workbook = openpyxl.Workbook()
workbook.save('student2.xlsx')
3.2 工作表的写操作
1)新建工作表
工作簿对象.create_sheet(表名,下标)
# 实际中的新建表:没有的时候才新建,有的时候直接打开
if 'Python' in workbook.sheetnames:
sheet = workbook['Python']
else:
sheet = workbook.create_sheet('Python')
workbook.save('student2.xlsx')
2)删除工作表
工作簿对象.remove(工作表对象)
# 实际中删除表:存在的时候才能删
if 'Sheet1' in workbook.sheetnames:
workbook.remove(workbook['Sheet1'])
workbook.save('files/student2.xlsx')
3.3 单元格的写操作
单元格对象.value=数据
python_sheet = workbook['python']
python_sheet.cell(1, 3).value = '电话'
python_sheet.cell(2, 1).value = None
python_sheet.cell(4, 2).value = 'stu003'
workbook.save('student2.xlsx')
可以添加、删除(设为空)、修改单元格里的内容。