1. Pandasを使用してリストデータをcsvファイルに書き込み、特定の操作を関数にカプセル化してから、それを直接呼び出します。
def insert_csv(datas):
df = pd.DataFrame(datas)
file_name = 'hello'
df.to_csv('{}.csv'.format(file_name),encoding = "GBK")
注:csvファイルに書き込むことは可能ですが、エンコードエラーを書き込むことはできません。エンコードを変更できます:gb18030エンコードに変更します。
挿入するデータフィールドが不明な場合は、追加して挿入できます。パラメータmodal = "a"を追加する必要があります。#获取csv
df.to_csv("my.csv", mode='a',header=False)
2. pandas 读取的表格内容
df = pd.read_csv('xxy_yang.csv', encoding="gbk")
lines = list()
#read_result:输出是一个索引,然后根据索引查出数据
read_result = df.reset_index().T.to_dict()
for _index in read_result:#获取每行的数据
lines.append(read_result[_index])
# 多进程加多线线程封装,写入表格
from concurrent.futures import ThreadPoolExecutor, as_completed
from multiprocessing import Process, Manager
# 返回的manager对象控制了一个server进程,此进程包含的python对象可以被其他的进程通过proxies来访问。从而达到多进程间数据通信且安全
def thread_run(_tuple):
line_list = _tuple
#开启进程,利用的是ThreadPoolExecutor,开启100个线程
executor = ThreadPoolExecutor(max_workers=100)
all_tasks = [executor.submit(do_data_process, line) for line in line_list]
data_list = list()
for future in as_completed(all_tasks):
result_dict = future.result()
if result_dict:
data_list.append(result_dict)
#这边可以插入数据
df = pd.DataFRame(data_list)
df.to_csv("xx.csv")
def do_data_process():
#该功能是数据处理好后返回数据
pass
# 创建进程6个进程
if __name__ == '__main__':
data_list = []
pool = list()
with Manager() as mess:
# 创建进程6个进程
for start_num in range(6):
p = Process(target=tread_run, args=((data_list[start_num::6]),))
p.start()
pool.append(p)
for p in pool:
p.join()