python 对csv文件的一些操作

本文只是为了方便自己下次编程所做的记录,可能所写对您来说没有帮助,不喜勿喷。

 

 

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

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值