第四节作业csv与xlxs文件读写20200820

练习1:读取餐饮csv文件的数据

文件: 餐饮.csv
在这里插入图片描述

方式1:用csv进行读写操作


#方式1:用csv进行读写操作
import csv

#利用csv模块使用---读文件并把内容返回为二维码列表中
def read_csvfile_csvM(filename):
    lists_data = []
    with open(filename,'r',encoding='gbk') as f_r:
        data_iterator = csv.reader(f_r)
        for data in data_iterator:
            #print(data)
            #print(type(data))# class 'list'
            lists_data.append(data)
        return lists_data

#利用csv模块使用---把lists内容增加索引值,并写如新文件中
def write_csvfile_csvM(lists_data,New_csv_filename):
    with open(New_csv_filename,'w',encoding='gbk',newline="") as f_w:
        datewriter = csv.writer(f_w)
       
        iline = 0
        for data in lists_data:
            list_data = []
            #print(data)
            #list_data = data
            if iline == 0:
                list_data.append('序列')
            else:
                list_data.append(str(iline))
            iline += 1
            list_data.extend(data)
            #print(list_data)
            datewriter.writerow(list_data)
            
if __name__ == '__main__':              
	csv_filename = '餐饮.csv'
	
	lists_data = read_csvfile_csvM(csv_filename)
	#print(lists_data)
	print(len(lists_data))
	
	New_csv_filename = '餐饮增加索引.csv'
	write_csvfile_csvM(lists_data,New_csv_filename)

输出文件:
餐饮增加索引.csv
在这里插入图片描述

方式2:用pandas进行读写操作

#方式2:用pandas进行读写操作
import pandas as pd
#pandas安装
#pip install pandas -i https://pypi.tuna.tsinghua.edu.cn/simple/

# pandas读取csv文件,显示全数据,显示第一行第一列
class C_pd_opt_csv_file():
    lists_rdata=[] #保持读取数据的二维码list
    def __init__(self,file_name):
        self.file_name = file_name
        
    # 隐藏类属性用property修饰,用pandas模块去读取csv文件内容,保存在二维码List中
    @property
    def pd_read_csv(self):
        data = pd.read_csv(self.file_name,encoding='gbk')
        print('len(data) = ',len(data))
        #表示取消最大列、行的限制
        pd.options.display.max_columns = None 
        pd.options.display.max_rows = None
        #display(data)
        
        self.lists_rdata = data.values.tolist() # 转换为二维码list型
        #print(self.lists_rdata)
        
        #pandas数据选取
        #city = data['城市'] #data[col]根据列名,并以Series的形式返回列
        #print('根据列名,并以Series的形式返回列:',city)
        #print(type(city)) #<class 'pandas.core.series.Series'>
        #print('返回第一行:',data.iloc[0,:]) #data.iloc[0,:]:返回第一行
        #print('返回第一列:',data.iloc[:,0]) #data.iloc[0,:]:返回第一列
    
    #用pandas模块把二维码list内容写入到csv文件中保存
    def pd_write_data_csv(self,w_file_name,lists_data):
        #保存数据
        columns = ['City','type','store_name','comment','per','taste', 'environment', 'service']
        df = pd.DataFrame(columns = columns, data = lists_data)
        df.to_csv(w_file_name, encoding='gbk')

if __name__ == '__main__':   
	csv_filename = '餐饮.csv'
	
	csv_new_filename = 'demo_w.csv'
	              
	c_pdcsv = C_pd_opt_csv_file(csv_filename)
	
	c_pdcsv.pd_read_csv
	
	#print(c_pdcsv.lists_rdata)
	
	c_pdcsv.pd_write_data_csv(csv_new_filename,c_pdcsv.lists_rdata)#把csv_filename文件内容换标题行后,写入新文件csv_new_filename

输出文件:
demo_w.csv
在这里插入图片描述

练习2:读取Stock.xlsx 文件数据

Stock.xlsx 文件:
在这里插入图片描述

from openpyxl import Workbook #写入xlsx文件
from openpyxl import load_workbook #读取xlsx文件

#openpyxl安装
#pip install openpyxl -i https://pypi.tuna.tsinghua.edu.cn/simple/

class C_pyxl_opt_xlsx_file():
    lists_rdata=[] #保持读取数据的二维码list
    def __init__(self,file_name):
        self.file_name = file_name
    
    #用openpyxl模块去读取xlxs文件内容,保存在二维码List中
    @property
    def pyxl_read_xlxs(self):
        rb = load_workbook(self.file_name)#打开工作簿
        rs = rb.active #读取第一个工资表
        #获取表里面的数值
        # ws.rows # 生成器对象
        for row in rs.rows:
            list_data=[]
            #print('row = ',row)
            for cell in row:
                #print('cell=',cell)
                #print ( 'cell value=', cell.value )
                list_data.append(cell.value)
            self.lists_rdata.append(list_data)
            
    #用openpyxl模块把二维码list内容写入到xlsx文件中保存
    def pyxl_write_data_xlxs(self,w_file_name,lists_data):
        wb = Workbook() #创建工作簿
        ws = wb.active #激活第一个工作表
        for row in lists_data:
            ws.append(row)
        wb.save(w_file_name)
        
if __name__ == '__main__':        
	c_pyxl = C_pyxl_opt_xlsx_file('Stock.xlsx')
	
	c_pyxl.pyxl_read_xlxs
	
	#print(c_pyxl.lists_rdata)
	
	c_pyxl.pyxl_write_data_xlxs('Stock_new.xlsx',c_pyxl.lists_rdata)

输出文件:Stock_new.xlsx

在这里插入图片描述

练习3:数据分析中的array

#long--type
import numpy as np

#创建内容为list_data的arr数组,返回数组和类型
def create_arr(list_data):
    arr_np = np.array(list_data)
    return arr_np,type(arr_np)



#创建内容为list_data的arr数组,并指定类型,返回数组和类型
def create_def_type_arr(list_data,dtype):
    arr_np = np.array(list_data,dtype)
    return arr_np,type(arr_np)

if __name__ == '__main__':
	#1.输出0-9的数组arr
	arr_np1,ty_arr1 = create_arr(range(10))
	
	print(arr_np1) #[0 1 2 3 4 5 6 7 8 9]
	print(ty_arr1) #<class 'numpy.ndarray'>
	
	#2.查看arr的数据类型
	print(arr_np1.dtype) # int32
	
	#3.创建0-5的数组arr1,并指定其数据类型为"bool"
	arr_np2,ty_arr2 = create_def_type_arr(range(5),"bool")
	print(arr_np2) #[False  True  True  True  True]
	print(ty_arr2) #<class 'numpy.ndarray'>
	print(arr_np2.dtype) # bool
	
	
	#4.改变arr1的数据类型为"float64"
	arr_np2 = arr_np2.astype("float64") #创建后修改类型,并没有改变原有的数值
	print(arr_np2.dtype) #float64


猜你喜欢

转载自blog.csdn.net/Narutolxy/article/details/108121527