1.想读取csv时候错误代码如下
fp = open(file_name,'rw')
报错:“must have exactly one of create/read/write/append mode”
原因:python中文件打开操作的mode中没有“rw"
合法的mode只有:r、rb、r+、rb+、w、wb、w+、wb+、a、ab、a+、ab+
2.读取csv文件的内容时编码错误
报错:'gbk' codec can't decode byte 0xad in position 10: illegal multibyte sequence
原因:我读取的csv文件是gbk编码的,是不合法的序列,在打开文件时用utf-8编码就行
即原语句
fp = open(file_name,'r')
改为
fp = open(file_name,'r',encoding = "utf-8",errors = "ignore")
3.sys.argv[]的语句的意思
看到的时候觉得很莫名其妙,其实就是一个列表,里面存了一些用户输入的参数,比如sys.argv[0]为这个python文件本身的文件名和文件路径,而sys.argv[1] 接收的的在终端传入的第一个参数。
4.将列表中的数据写入excel
import xlwt
f = xlwt.Workbook()
sheet1 = f.add_sheet(u'sheet',cell_overwrite_ok=True)
#先写入标题
i = 0
for h in header:
sheet1.write(0,i,h)
i = i + 1
#再写入数据
i = 1
for d in data:
for j in range(len(d)):
sheet1.write(i,j,d[j])
i = i + 1
f.save('data.xls')
5.数据清洗
import numpy as np
import pandas as pd
#读取csv文件
raw_data = pd.read_csv('文件路径名')
#删除一些不必要的行/列
raw_data.drop(['行列属性名1','行列属性名2'], axis = 0(行)/1(列), inplace = True(表示在原数据上进行修改)/False(表示修改完后生成新的数据列表))
#对空值进行填充
raw_data.fillna({'行列属性名':'要填充的数据',axis = 0(行)/1(列), inplace = True(表示在原数据上进行修改)/False(表示修改完后生成新的数据列表)}
#重新命名列(要先创建一个字典)
new_name = {'原列名1' : '新列名1','原列名2' : '新列名2'}
raw_data.rename(columns = new_name, inplace = True/False(同上))
#用字符串操作来规范数据
raw_data.str.lower() #大写英文换小写
raw_data.str.upper() #小写英文换大写
raw_data.str.capitalize() #首字母大写
raw_data.str.replace('要替换上的字符','要被替换的字符') #字符的替换
raw_data.str.strip() #去除字符串中的头尾空格
raw_data.str.split('分隔符') #根据分隔符将字符串分隔成列表
raw_data.str.get(位置序号) #获取列表这个序号的数据
raw_data.contains('要查找的字符') #判断是否存在要查找的字符
raw_data.str.find('要查找的字符串') #查找是否存在要查找的字符串,存在就返回开始位置的索引值
#查看数据
raw_data.head(t) #查看数据前t行,不传参的话默认是五行
raw_data.tail(t) #查看数据后t行,不传参的话默认是五行
raw_data.info() #打印出每列数据的具体信息和内存信息
#删除重复数据
raw_data.drop_duplicates() #删除重复数据