本文只是为了方便自己下次编程所做的记录,可能所写对您来说没有帮助,不喜勿喷。
with open(filepath_poi, encoding='gbk') as f:
reader = csv.reader(f)
# first_row = reader.__next__()
# second_row = reader.__next__()
# print(first_row)
# print(second_row)
#-----------------------
index = 0
dis_area = []
try:
for row in reader:
dis_area.append(row[0])#第一列的数据映射到不重复的矩阵
for one_geo in dis_area:
if one_geo not in d:
d[one_geo]=[]
index += 1
d[one_geo].append(index)
except csv.Error as e:
sys.exit('file {}, line {}: {}'.format(filename, reader.line_num, e))
with open(csv文件) as f:
()可写mode="w"进入可写模式
newline=""不会多一个空行,一般要写入文件的时候写入这句话
encoding=""设置编码格式gb2312,utf-8,gbk等
writer=csv.writer(f)#写入文件
reader=csv.reader(f)#读文件
first_row = reader.__next__()#读入导航文件的第一行
可以对第一行进行添加列first_row.append("列名")
writer.writerow(first_row)#写入行
用for row in reader: 对读的文件每一行进行操作
for row in reader:
row[0] = d[row[0]][0]
del row[19]
del row[17]
del row[15]
对时间进行处理
def combine_date_hour(date: str, hour: str):
new_date = "{0} {1}:00".format(date, hour)
return new_date
row[3] = combine_date_hour(row[3], row[4])
row.append(datetime.datetime.strptime(row[3] ,format).weekday())#用指定日期时间(row[3])创建datetime,strptime为字符串
#用户输入的日期和时间是字符串,要处理日期和时间,首先必须把str转换为datetime。转换方法是通过datetime.strptime()实现
# print(row[3])
t1=time.strptime(row[3],format)#处理时间格式,把时间格式统一
t2=datetime.datetime(t1[0],t1[1],t1[2],t1[3],t1[4])#处理时间格式,把时间格式统一
t3=t2
row[3]=t3.strftime("%Y-%m-%d %H:%M")#处理时间格式,把时间格式统一
PD方式处理数据
from pandas import Series, DataFrame
import numpy as np
import pandas as pd
把统计字段相同的数据,放入一个新表
def groupy(filepath_origin,filepath_new):
f01 = pd.read_csv(filepath_origin)#pd方式读文件
f01_grouped=f01.groupby(["start_geo_id", "end_geo_id", "create_date","create_hour","weekday"])#统计这几个相同的数有几个
print (f01_grouped.size())
f01_dataframe=DataFrame(f01_grouped.size(),columns=['count'])#计数的列名
f01_dataframe.to_csv(filepath_new,encoding="gb2312")
连接两个表,用列名里属性相同的值进行连接
pd.merge(pd_July_train,pd_weather,left_on = 'create_date',right_on='date',how='left').to_csv(merge_July_train_weather,index=False,encoding="gb2312")
例子是连接两个表,表一的create_date,和表二的date值相同的进行连接
注:要添加index=False要不然会多一列,最好也把编码格式设置一下encoding,how是连接方式
PD方式,对文件排序
train=train.sort_values(by=['create_date'],ascending=True,axis=0)#把文件按create_date顺利排序
删除列
train.drop(['poi_x','poi_y'], axis=1, inplace=True)#这个填补也没用
补缺失值方法
# train['petrol station_x']=train['petrol station_x'].fillna(train['petrol station_x'].mean())#按平均值填补缺失值
这里有对于缺失值处理的方法
https://blog.csdn.net/duxu24/article/details/75058538
https://www.cnblogs.com/nxld/p/6058591.html
xrld对excel操作
http://www.jb51.net/article/123463.htm