1.用Python通过csv文件里面的某一列,形成键值,然后统计键在其他列出现的次数。

import pandas as pd
import numpy as np
import csv
import codecs
import sys data_original = pd.read_csv('D:/csv_data_original.csv')
data = pd.read_csv('D:/week1.csv')
#data = data['retweeted_status_mid'].fillna('NOT PROVIDED',inplace=True)
#data_transpond = data[data['retweeted_status_mid'] != 'NOT PROVIDED'] #每条原创微博转发次数统计
def statistics(path1,path2):
num1 = 0
num2 = 0
#这块代码用来形成键值,初始化为0
with open(path2, 'r', encoding="iso-8859-1") as f:
reader2 = csv.reader(f)
data_head2 = next(reader2)
print(data_head2)
data_line = next(reader2)
while(data_line):
if data_line[0] not in mid.keys():
mid[data_line[0].encode("iso-8859-1").decode("gbk", "ignore")] = 0
num2 += 1
print("正在创建第" + str(num2) + "个键")
try:
data_line = next(reader2)
except StopIteration:
print("数据处理完毕,键值完全形成" + str(num2) + "!")
break
#sys.exit()
f.close()
#这块代码用来统计每个键出现的次数
with open(path1, 'r', encoding="iso-8859-1") as f:
reader1 = csv.reader(f)
data_head1 = next(reader1)
print(data_head1)
data_line = next(reader1)
while(data_line):
if data_line[1] in mid.keys():
mid[data_line[1].encode("iso-8859-1").decode("gbk", "ignore")] += 1
print("这条微博被转发" + str(mid[data_line[1]]) + "次")
try:
data_line = next(reader1)
except StopIteration:
print("数据处理完毕,转发次数统计完毕")
break
#sys.exit()
f.close()
#字典转化为列表
def transpond(dict):
global list_key#保存键
global list_value#保存值
list_key = list(dict)
list_value = list(dict.values()) #将数据写入csv文件
def data_write_csv(file_name, list1,list2):#file_name为写入CSV文件的路径,datas为要写入数据列表
with open(file_name,'w',newline='') as f:
writer = csv.writer(f)
writer.writerows(zip(list1, list2)) if __name__ == "__main__":
path_data = 'D:/week1.csv' # 原始数据路径
path_data_original = 'D:/csv_data_original.csv' # 处理后只含原创的微博数据路径
path_save = 'D:/transpond_data.csv' # 保存处理后的数据
mid = {} # 定义字典用来保存每条原创微博被转发的次数
list_key = [] # 保存键
list_value = [] # 保存值
statistics(path_data,path_data_original)
transpond(mid)
data_write_csv(path_save,list_key,list_value)

2.与1类似的操作,具体有一些细节变动,代码中有注释

import csv
import pandas as pd #每条原创微博转发次数统计
def statistics(path1,path2):
num2 = 0
#这块代码用来形成键值,初始化为0
with open(path2, 'r', encoding="iso-8859-1") as f:
reader2 = csv.reader(f)
data_head2 = next(reader2)
print(data_head2)
data_line = next(reader2)
while(data_line):
if data_line[0] not in mid.keys():
mid[data_line[0].encode("iso-8859-1").decode("gbk", "ignore")] = 0
num2 += 1
print("正在创建第" + str(num2) + "个键")
try:
data_line = next(reader2)
except StopIteration:
print("数据处理完毕,键值完全形成" + str(num2) + "!")
break
#sys.exit()
f.close()
#这块代码用来统计每个键出现的次数
with open(path1, 'r', encoding="iso-8859-1") as f:
reader1 = csv.reader(f)
data_head1 = next(reader1)
print(data_head1)
data_line = next(reader1)
while(data_line):
if data_line[2] in mid.keys():
mid[data_line[2].encode("iso-8859-1").decode("gbk", "ignore")] += int(data_line[1])
print("这个用户的微博被转发一共" + str(mid[data_line[2]]) + "次")
try:
data_line = next(reader1)
except StopIteration:
print("数据处理完毕,转发次数统计完毕")
break
#sys.exit()
f.close() #字典转化为列表
def transpond(dict):
global list_key#保存键
global list_value#保存值
list_key = list(dict)
list_value = list(dict.values()) #将数据写入csv文件
def data_write_csv(file_name, list1,list2):#file_name为写入CSV文件的路径,datas为要写入数据列表
with open(file_name,'w',newline='') as f:
writer = csv.writer(f)
writer.writerows(zip(list1, list2)) if __name__ == '__main__':
path1 = 'D:/csv_data_original_num.csv' # 用来形成键的数据路径
path2 = 'D:/data_all.csv' # 用来查找键值的数据路径
path_save = 'D:/user_transpond.csv' # 存放统计好的数据路径
mid = {}
list_key = []
list_value = []
statistics(path2,path1)
transpond(mid)
data_write_csv(path_save,list_key,list_value)

3.将大数据的csv文件根据特定条件分成几份小文件

#coding = utf-8
import pandas as pd
import csv def get_txt(path1,path2,path3,path4,path5,path6,path7,path8):
num = 0
with open(path1, 'r',encoding = 'utf-8') as f:
txt1 = open(path2, "w", encoding='utf-8')
txt2 = open(path3, "w", encoding='utf-8')
txt3 = open(path4, "w", encoding='utf-8')
txt4 = open(path5, "w", encoding='utf-8')
txt5 = open(path6, "w", encoding='utf-8')
txt6 = open(path7, "w", encoding='utf-8')
txt7 = open(path8, "w", encoding='utf-8')
reader1 = csv.reader(f)
data_head1 = next(reader1)
print(data_head1)
data_line = next(reader1)
while(data_line):
num += 1
print(num)
print(data_line[6])
if num > 0 and num < 700000:
txt1.write(data_line[6] + '\n')
elif num >= 700000 and num < 1400000:
txt2.write(data_line[6] + '\n')
elif num >= 1400000 and num < 2100000:
txt3.write(data_line[6] + '\n')
elif num >= 2100000 and num < 2800000:
txt4.write(data_line[6] + '\n')
elif num >= 2800000 and num < 3500000:
txt5.write(data_line[6] + '\n')
elif num >= 3500000 and num < 4200000:
txt6.write(data_line[6] + '\n')
elif num >= 4200000 and num < 4700000:
txt7.write(data_line[6] + '\n')
try:
data_line = next(reader1)
except StopIteration:
print("数据处理完毕,转发次数统计完毕")
break
#sys.exit()
f.close()
if __name__ == '__main__':
path1 = 'D:/week1.csv'
path2 = 'D:/text1.txt'
path3 = 'D:/text2.txt'
path4 = 'D:/text3.txt'
path5 = 'D:/text4.txt'
path6 = 'D:/text5.txt'
path7 = 'D:/text6.txt'
path8 = 'D:/text7.txt'
get_txt(path1,path2,path3,path4,path5,path6,path7,path8)

数学建模之Python操作csv文件的更多相关文章

  1. Python操作csv文件

    1.什么是csv文件 The so-called CSV (Comma Separated Values) format is the most common import and export fo ...

  2. python操作txt文件中数据教程[3]-python读取文件夹中所有txt文件并将数据转为csv文件

    python操作txt文件中数据教程[3]-python读取文件夹中所有txt文件并将数据转为csv文件 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考文献 python操作txt文件中 ...

  3. Python对csv文件的读写操作

    python内置了csv模块,用它可以方便的操作csv文件. 1.写文件 (1)写文件的方法一 import csv # open 打开文件有多种模式,下面是常见的4种 # r:读数据,默认模式 # ...

  4. python中操作csv文件

    python中操作csv文件 读取csv improt csv f = csv.reader(open("文件路径","r")) for i in f: pri ...

  5. python操作csv和excel文件

    1.操作csv文件 1).读取文件 import csv f=open("test.csv",'r') t_text=csv.reader(f) for t,i in t_text ...

  6. Python处理csv文件

    Python处理csv文件 CSV(Comma-Separated Values)即逗号分隔值,可以用Excel打开查看.由于是纯文本,任何编辑器也都可打开.与Excel文件不同,CSV文件中: 值没 ...

  7. 使用Python读写csv文件的三种方法

    Python读写csv文件 觉得有用的话,欢迎一起讨论相互学习~Follow Me 前言 逗号分隔值(Comma-Separated Values,CSV,有时也称为字符分隔值,因为分隔字符也可以不是 ...

  8. python读写csv文件

    文章链接:https://www.cnblogs.com/cloud-ken/p/8432999.html Python读写csv文件 觉得有用的话,欢迎一起讨论相互学习~Follow Me 前言 逗 ...

  9. python操作txt文件中数据教程[4]-python去掉txt文件行尾换行

    python操作txt文件中数据教程[4]-python去掉txt文件行尾换行 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考文章 python操作txt文件中数据教程[1]-使用pyt ...

随机推荐

  1. 使用arcpy添加grb2数据到镶嵌数据集中

    #!coding: utf-8 import numpy as np import arcpy def addGRB2ToMosaic(grb2name): print "start add ...

  2. IDEA rider 管道模式 经典模式(2)

    1.这里设置为Classic,并打开applicationhost.config将对应应用的 Clr4IntegratedAppPool全部替换为 Clr4ClassicAppPool 2.Confi ...

  3. 前端学习:学习笔记(CSS部分)

    前端学习:学习笔记(CSS部分) CSS的学习总结(图解) CSS的引入方式和书写规范 CSS的插入方式_内嵌样式 <!DOCTYPE html> <html> <hea ...

  4. oracle日期格式和java日期格式区别 HH24:mm:ss和HH24:mi:ss的区别

    转载自:https://blog.csdn.net/yubin_yubin/article/details/18655553 在日期数据库数据查询出来的时候经常会to_char()一下,格式化一下日期 ...

  5. 【java】javac命令在win10不可用,提示javac不是内部或外部命令,也不是可运行的程序【解决方法】

    JDK安装成功,并且配置了环境变量,java命令正常可以使用,但是javac命令提示 不是内部或外部命令,也不是可运行的程序 解决方法: 产生这个问题的原因,是因为环境变量的配置中,Path中配置使用 ...

  6. .net H5微信,支付宝充值

    using clientpay.Data.AlipayConfig; using clientpay.Data.BLL; using clientpay.Data.Entity; using Aop. ...

  7. 我是如何一步步编码完成万仓网ERP系统的(十四)库存 3.库存日志

    https://www.cnblogs.com/smh188/p/11533668.html(我是如何一步步编码完成万仓网ERP系统的(一)系统架构) https://www.cnblogs.com/ ...

  8. 修改Nginx配置参数解决http状态码:413上传文件大小限制问题

    修改Nginx上传文件大小限制 我们使用ngnix做web server的时候,nginx对上传文件的大小有限制,默认是1M. 当超过大小的时候会报413(too large)错误.这个时候我们要修改 ...

  9. C#中 char、byte、string

    var str = "我是中国人";var str1 = "abc"; char[] chars = str.ToCharArray();char[] char ...

  10. js中的原型,原型链和继承

    在传统的基于Class的语言如Java.C++中,继承的本质是扩展一个已有的Class,并生成新的Subclass. 由于这类语言严格区分类和实例,继承实际上是类型的扩展.但是,JavaScript最 ...