数学建模之Python操作csv文件
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文件的更多相关文章
- Python操作csv文件
1.什么是csv文件 The so-called CSV (Comma Separated Values) format is the most common import and export fo ...
- python操作txt文件中数据教程[3]-python读取文件夹中所有txt文件并将数据转为csv文件
python操作txt文件中数据教程[3]-python读取文件夹中所有txt文件并将数据转为csv文件 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考文献 python操作txt文件中 ...
- Python对csv文件的读写操作
python内置了csv模块,用它可以方便的操作csv文件. 1.写文件 (1)写文件的方法一 import csv # open 打开文件有多种模式,下面是常见的4种 # r:读数据,默认模式 # ...
- python中操作csv文件
python中操作csv文件 读取csv improt csv f = csv.reader(open("文件路径","r")) for i in f: pri ...
- python操作csv和excel文件
1.操作csv文件 1).读取文件 import csv f=open("test.csv",'r') t_text=csv.reader(f) for t,i in t_text ...
- Python处理csv文件
Python处理csv文件 CSV(Comma-Separated Values)即逗号分隔值,可以用Excel打开查看.由于是纯文本,任何编辑器也都可打开.与Excel文件不同,CSV文件中: 值没 ...
- 使用Python读写csv文件的三种方法
Python读写csv文件 觉得有用的话,欢迎一起讨论相互学习~Follow Me 前言 逗号分隔值(Comma-Separated Values,CSV,有时也称为字符分隔值,因为分隔字符也可以不是 ...
- python读写csv文件
文章链接:https://www.cnblogs.com/cloud-ken/p/8432999.html Python读写csv文件 觉得有用的话,欢迎一起讨论相互学习~Follow Me 前言 逗 ...
- python操作txt文件中数据教程[4]-python去掉txt文件行尾换行
python操作txt文件中数据教程[4]-python去掉txt文件行尾换行 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考文章 python操作txt文件中数据教程[1]-使用pyt ...
随机推荐
- Flink task之间的数据交换
Flink中的数据交换是围绕着下面的原则设计的: 1.数据交换的控制流(即,为了启动交换而传递的消息)是由接收者发起的,就像原始的MapReduce一样. 2.用于数据交换的数据流,即通过电缆的实际数 ...
- 如何定时查询某线程的CPU执行时间
#!/bin/bash pid=$(ps -T -p $(pgrep xxx) | grep xxx | gawk -F" " '{print $2}') if [ -z $pid ...
- Mono 下的 ASP.NET 可以运行在哪些 Web 服务器上?
Mono has an implementation of ASP.NET 2.0, ASP.NET MVC and ASP.NET AJAX. Quick Resources: ASP.NET FA ...
- 【3】hexo+github搭建个人博客的主题配置
更换博客主题 主题可参考:https://hexo.io/themes/ hexo默认主题:Landscape 示例主题:Next 下载Next主题 进入Blog所在目录,输入下载命令 #进入Blog ...
- 『optimization 动态规划』
optimization Description \(visit\_world\) 发现有些优化问题可以用很平凡的技巧解决,所以他给你分享了这样一道题: 现在有一个长度为N的整数序列\(\{a_i\} ...
- Java 线程的基本使用
GitHub Page: http://blog.cloudli.top/posts/Java-线程的基本使用/ 创建线程 创建线程的方式有两种: 继承 Thread 类 实现 Runnable 接口 ...
- SpringBoot security关闭验证
SpringBoot security关闭验证 springboot2.x security关闭验证https://www.cnblogs.com/guanxiaohe/p/11738057.html ...
- C# 简单日志帮助类LogHelper
调用: LogHelper.Debug(""); LogHelper.Info(""); LogHelper.Error(""); 项目添加 ...
- python类的实例化
class Person(object): # 创建类 def __init__(self, name): # 构造函数 self.name = name def getName(self): # 类 ...
- k8s时区问题解决方案
前几天在使用k8s中的CronJob时发现了一个很奇怪的问题, 按照官方文档的demo跑起来是没有任何问题的, 但是当我想要设置每天一个固定时间点例如12点20执行一个job的时候,到了时间之后无论如 ...