练习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