python:pandas解析csv
前提:pip install pandas
总结:
用DataFrame接收二维数组,用Series接收一维数组。
DataFrame[列名] = Series列的内容。
1 import pandas as pd 2 3 4 # df = pd.DataFrame(pandasObj):将pandasObj转为二维数组 5 # df = pd.DataFrame([[],[]],columns=[],index=[]):将二维数组转为DataFrame格式 6 def readCsv(src): 7 t = pd.read_csv(src) # 获取pandas对象 8 df = pd.DataFrame(t) # 通过pandas的DataFrame()将DataFrame格式转为二维数组 9 series_time = df['time'] # 通过df['列名']得到该列的一维数组 10 val_temp = series_time[10] # 获取time列第10条数据 11 12 def writeCsv(dst): 13 _matrix = [] # 定义一个数组(准备作为二维数组) 14 _head = ['name','time','age'] # 定义表头字段 15 for i in range(0,10): 16 _l = ['william','2020-02-02 19:01:01',12] # 定义每行的信息 17 _matrix.append(_l) # 将每行添加至二维数组里 18 df = pd.DataFrame(_matrix,columns=_head) # 通过pandas的DataFrame()将二维数组转为dataFrame格式 19 df.to_csv(dst) # 将DataFrame格式的数据写入csv
class PandasUse: @staticmethod def write_csv(): _path,_file_name = "xxx","file.csv" _dst = os.path.join(_path+_file_name) # 以二维数组接收要写的数据 _data = [] while True: _data.append(['','','']) # 待写入文件的表头 _head = ['name','age','sex'] # 将二维数组转换为DataFrame对象 df = pd.DataFrame(_data,columns=_head) # 将DataFrame对象通过pandas写入csv,并去除左侧第一列默认自增的index df.to_csv(_dst,index=False) # pandas读文件,返回DataFrame对象 def read_file(src:str): # 从文件中读取数据,以DataFrame对象接收 _df = pd.read_csv(src) # pandas读大文件,返回DataFrame对象。结合yield,可以读取超出本机内存大小的文件(如4G内存的电脑读取8G大小的文件) # _df = read_large_file("xxx.csv",chunksize=10),for _ in _df: print(_) def read_large_file(src:str, chunksize:int) _read = pd.read_csv(src, sep=',',chunksize=chunksize) while True: try: yield _read.get_chunk() except StopIteration: break