python读写csv文件

#-*-coding:utf-8-*-
import csv
import os
#记录已存在的date.csv
   
#将words写入date.csv文件最后一行,文件打开采用'a'模式,即在原文件后添加(add)
def writeByDate(words):
    file_name ="1111.csv"
    os.chdir('../data/')
    f = open(file_name,'a',newline='')
    write = csv.writer(f)
    write.writerow(words)
    f.close()

#主函数
def splitByDate():
    f = open("../data/yu.csv")
    rows = csv.reader(f)
    for row in rows:
        for i in range(len(row)):
             row[i] = int(row[i])
             if(row[i]<10):
                  print(row[i])
        
splitByDate()
#-*-coding:utf-8-*-
"""
将tianchi_mobile_recommend_train_user.csv按照日期分割为31份**.csv文件,放在'/data/date/'目录下。
生成的**.csv文件内容格式如下:

user_id, item_id, behavior_type,user_geohash,item_category,    hour
99512554,37320317,  3,            94gn6nd,    9232,             20

"""

import csv
import os


#记录已存在的date.csv
date_dictionary = {}
   
#将words写入date.csv文件最后一行,文件打开采用'a'模式,即在原文件后添加(add)
def writeByDate(date,words):
    file_name = date+".csv"
    os.chdir('../data/date/')
    if date in date_dictionary:
        f = open(file_name,'a',newline='')
        write = csv.writer(f)
        write.writerow(words)
        f.close()
    else:
        date_dictionary[date] = True
        f = open(file_name,'a',newline='')
        write = csv.writer(f)
        write.writerow(['user_id','item_id','behavior_type','user_geohash','item_category','hour'])
        write.writerow(words)
        f.close()
    os.chdir('../../data/') #回到本代码所在的上一级文件


#主函数
def splitByDate():
    os.mkdir('../data/date/')
    f = open("../data/tianchi_fresh_comp_train_user.csv")
    rows = csv.reader(f)
    header  = next(rows )
    for row in rows:
        date = row[-1].split(" ")[0]
        hour = row[-1].split(" ")[1]
        words = row[0:-1]
        words.append(hour)
        writeByDate(date,words)
        
splitByDate()
#-*-coding:utf-8-*-
"""
对于某一天的数据按四种操作切割:浏览,收藏,加入购物车,购买
"""

import csv
import os


#记录已存在的date.csv
behavior_dictionary = {}

#将words写入date.csv文件最后一行,文件打开采用'a'模式,即在原文件后添加(add)
def writeByDate(behavior,words):
    file_name = behavior+".csv"
    os.chdir('../data/behaviour_type/')
    if not behavior in behavior_dictionary:
        behavior_dictionary[behavior] = True
        f = open(file_name,'a')
        write = csv.writer(f)
        write.writerow(['user_id','item_id','behavior_type','user_geohash','item_category','date'])
        write.writerow(words)
        f.close()
    else:
        f = open(file_name,'a')
        write = csv.writer(f)
        write.writerow(words)
        f.close()
    os.chdir('../../data/')

#主函数
def splitByDate():
    os.mkdir('../data/behaviour_type/')
    f = open("../data/2014-12-18.csv")
    rows = csv.reader(f)
    for row in rows:
        behavior = row[2]
        words = row[0:-1]
        words.append(behavior)
        writeByDate(behavior,words)

splitByDate()
文章来自于[Merge CSV Files Into One Large CSV File In Windows 7](http://www.solveyourtech.com/merge-csv-files/)。经[测试](http://lib.csdn.net/base/softwaretest),win7以上版本的windows都可以。步骤如下:

将所有的csv文件放到一个文件夹,位置任意。
打开cmd,切换到存放csv的文件夹,也可以在csv文件夹中,按住shift加鼠标右键,选择在此处打开命令窗口。
输入**copy *.csv all-groups.csv**,all-group的名字,可以任意。然后按enter,等待完成就可以了。
打开csv文件夹就可以看到all-group.csv

excel不适合操作大量的数据,建议将csv导入到[数据库](http://lib.csdn.net/base/mysql)中去。

怎么读取超大数据的csv文件呢?
注意:csv文件默认格式是gbk而不是utf-8.

import pandas as pd

df = pd.read_csv('JData_User.csv',encoding='gbk')
print(df)

pandas读取超大数据文件

import pandas as pd

df = pd.read_csv('JData_Action_201604.csv',encoding='gbk')
df2 = pd.read_csv('JData_Product.csv',encoding='gbk')
#==============================================================================
# df = df[df.type==2]
#==============================================================================
df = df[(df.type==3)|(df.type==4)]
#==============================================================================
# df.to_csv('wantpay_4.csv',encoding='utf-8')
#==============================================================================
result1 = pd.merge(df, df2, on=['sku_id'])
print(result1)
result1.to_csv('pay_or_cancel_4.csv',encoding='utf-8')
#==============================================================================
# result1 = pd.merge(df, df2, on=['sku_id'])
# print(result1)
# result1.to_csv('wantpay_product.csv',encoding='utf-8')
#==============================================================================

进行时间格式转换

import time
import datetime

time_original = '17/9/2012 11:40:00'
day = time_original.split(' ')[0]
time_format = datetime.datetime.strptime(time_original,'%d/%m/%Y %H:%M:%S')
#这里可以 print time_format 或者 直接 time_format 一下看看输出结果,默认存储为datetime格式
time_format = time_format.strftime('%Y%m%d%H%M%S')
print(time_format)

pandas中的删除重复数据duplicates的用法

import pandas as pd
import time
import datetime

df = pd.read_csv('all.csv',encoding='gbk')
df = df.drop_duplicates(['user_id','sku_id'], keep=False)
df.to_csv('will_pay_4.csv',encoding='utf-8')
print(df)
import pandas as pd
#按日期截取csv文件中的数据
actions = pd.read_csv("2m.csv",encoding='gbk')
actions = actions[(actions.time >= '2016-03-15') & (actions.time < '2016-04-16')]
actions.to_csv('between_days.csv',encoding='utf-8')

将list写入txt:

fl=open('list.txt', 'w')
    for i in lists:
         fl.write(i)
         fl.write("\n")
    fl.close()
df = df.groupby(['user_id'], as_index=False).sum()#获取所有对应的['area']的总数
df =df.groupby(['area'], as_index=False).size()#获取每个['area']的个数
df =df.groupby(['area'], as_index=False).mean()#获取每个['area']的均值
import pandas as pd

df = pd.read_csv('submission.csv')
df['sort_id'] = df['lab'].groupby(df['user_id']).rank()
print(df)

求日期的前一天

from datetime import timedelta, datetime
yesterday = (datetime.strptime(str(end_date), '%Y-%m-%d') - timedelta(days=1)).strftime('%Y-%m-%d')
print(yesterday)
#相隔的日期
a = (datetime.strptime(str('2016-04-06'), '%Y-%m-%d') - datetime.strptime(str('2016-04-01'), '%Y-%m-%d')).days

将任意格式的时间转化为指定日期

results = pd.read_csv("nba_data.csv", parse_dates=["Date"])

将以毫秒计数的时间转换为正常YMDHMS格式

all_ratings["Datetime"] = pd.to_datetime(all_ratings['Datetime'],unit='s')

简单小tips

print("There are {} movies with more than {} favorable reviews".format(3,4))
"""
There are 3 movies with more than 4 favorable reviews
"""
#除去‘user’在0-2之间的数据
df=  df[~df['user'].isin(range(3))]  
#显示出常见的参数
adult["Hours-per-week"].describe()
"""
count    19115.000000
mean        40.393408
std         12.253508
min          1.000000
25%         40.000000
50%         40.000000
75%         45.000000
max         99.000000
Name: Hours-per-week, dtype: float64
"""

怎么求pandas中的间隔日期呢?

def get_gap_days():
    ActData = pd.read_csv('../data/train.csv')
    ActData['time'] = pd.to_datetime(ActData['clickTime'],format='%d%H%M')
    time0 = ['1899-12-31 00:00:00']
    time0 = pd.to_datetime(pd.Series(time0))
    ActData['days'] = (ActData['time'] - time0.iat[0]).dropna()
    ActData['days'] = np.int32(ActData['days'] / np.timedelta64(24, 'h'))
    print(ActData)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,117评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,328评论 1 293
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,839评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,007评论 0 206
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,384评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,629评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,880评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,593评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,313评论 1 243
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,575评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,066评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,392评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,052评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,082评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,844评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,662评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,575评论 2 270

推荐阅读更多精彩内容