今天来学习python中csv文件的操作
这是机器学习中最为重要的一个技能。
因为机器学习中很多的训练集和测试集均是csv文件
在看代码之前请先在你的目录下确保已经有一个hellocsv.csv的文件。你可以使用excel创建然后保存的时候选择格式是csv就可以,默认使用逗号作为分隔符号
内容如下:
代码块
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Author : SundayCoder-俊勇
# @File : csvLearn.py
# 今天我们来学习一下python中的CSV文件的相关操作。
# CSV全称为“Comma Separated Values”,
# 是一种格式化的文件,由行和列组成,
# 分隔符可以根据需要来变化,一般的分隔符默认使用的是逗号。
# 创建文件hellocsv.csv并初始化,初始化内容如下。
# name,age,classroom
# zhangsan,23,1401
# lisi,24,1402
# (1)读取csv文件的所有内容,包括标题和内容。
import csv#这个模块是python自带的一个模块
#
# 只需要注意文件名必须为单引号而不是双引号!!!
# reader = csv.reader(open("hellocsv.csv"))
# for name,age,classroom in reader:
# print name,age,classroom
# 输出的结果为:
# name age classroom
# zhangsan 23 1401
# lisi 24 1402
# (2)另外一种方法
# csv_reader = csv.reader(open('hellocsv.csv'))
# for row in csv_reader:
# print row
# 输出的结果为:
#[' name', 'age', 'classroom']
# [' zhangsan', '23', '1401']
# [' lisi', '24', '1402']
# 可以看出这种方法把每一行变成了一个list返回。
# (3)第三种方法读csv文件
# with open('hellocsv.csv','rb') as csvfile:
# reader = csv.reader(csvfile)
# rows = [row for row in reader]
# print rows
# 输出的结果为:一个大的列表里面还有三个小的列表
# [[' name', 'age', 'classroom'],
# [' zhangsan', '23', '1401'],
# [' lisi', '24', '1402']]
# (4)只提取某一行的数据:例如提取第二行的数据
# with open('hellocsv.csv','rb') as csvfile:
# reader = csv.reader(csvfile)
# for i,rows in enumerate(reader):
# if i == 2:
# row = rows
# print row
# 输出的结果为:[' lisi', '24', '1402']
# 注意行数从0开始。
# (5)读取文件的第五种方式:使用DictReader,
# 和reader函数类似,接收一个可迭代的对象,
# 能返回一个生成器,但是返回的每一个单元格都放在一个字典的值内,
# 而这个字典的键则是这个单元格的标题(即列头)。
#
# with open('hellocsv.csv','rb') as csvfile:
# reader = csv.DictReader(csvfile)
# rows = [row for row in reader]
# print rows
# 输出的结果为:
# [{'classroom': '1401', 'age': '23', ' name': ' zhangsan'},
# {'classroom': '1402', 'age': '24', ' name': ' lisi'}]
# 注:字典的键是这个单元格的标题
# (6)读取制定行的数据的另一种写法。
# with open('hellocsv.csv','rb') as csvfile:
# reader = csv.DictReader(csvfile)
# for row in reader:
# if row['name']=='zhangsan':
# print row
# 输出的结果为:{'classroom': '1401', 'age': '23', 'name': 'zhangsan'}
# (5)写入数据到csv文件之中。
# data =['wangpeng', '22', '1402']
# with open('hellocsv.csv','a+') as csvfile:
# csv_writer = csv.writer(csvfile)
# csv_writer.writerow(data)
# 写入之后再查看文件内容
# csv_reader = csv.reader(open('hellocsv.csv'))
# for row in csv_reader:
# print row
# 数字识别的测试1:
# with open('hellocsv.csv', 'r') as csvfile1:
# csv_reader = csv.reader(csvfile1)
# dataSet = list(csv_reader)
# print dataSet
# 输出的结果为:
# [
# ['name', 'age', 'classroom'],
# ['zhangsan', '23', '1401'],
# ['lisi', '24', '1402']
# ]
# 数字识别的测试2:
# with open('hellocsv.csv', 'r') as csvfile1:
# csv_reader = csv.reader(csvfile1)
# dataSet = list(csv_reader)
# for x in range(0, len(dataSet)):
# print dataSet[x]
# 输出的结果为:
# ['name', 'age', 'classroom']
# ['zhangsan', '23', '1401']
# ['lisi', '24', '1402']
# 可以看出如果X为0的话则标题也被当做数据,所以机器学习中需要去掉标题
# 也就是x应该从1开始。
加油一起学习,更新完毕