亲手实践并记录下一些实用的Python技巧。
我们从UCI数据库将数据集保存下来时,是csv格式,且文件所有数据都在一列中,如何将1列csv转换为多列,是我们研究的重点,接下来我采用的是UCI数据集bank.csv文件作为演示案例。
首先,导入工具包。
import pandas as pd
import numpy as np
其次,读取数据,用的是pd.read_csv工具包,以“;”作为分割依据:
#读取数据
data = pd.read_csv('bank.csv',sep=';')
print(data)
然后,转换数据,将数据转换为numpy数组,然后写入列表:
#转换数据
data_array = np.array(data)
list_data = data_array.tolist()
print(list_data)
再然后,将我们所需的字段名建立空列表,这里用age和job作为演示:
#将数据保存在相应列表
age,job,marital,education,default,balance,housing,loan,contact,day,month,duration,campaign,pdays,previous,poutcome = [],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]
for i in list_data:
age.append(i[0])
job.append(i[1])
marital.append(i[2])
education.append(i[3])
default.append(i[4])
balance.append(i[5])
housing.append(i[6])
loan.append(i[7])
contact.append(i[8])
day.append(i[9])
month.append(i[10])
duration.append(i[11])
campaign.append(i[12])
pdays.append(i[13])
previous.append(i[14])
poutcome.append(i[15])
print(job)
最后,将多个列表合成一个列表,将列表转换为DataFrame格式,再写入Excel中,输出‘bank_new.xlsx’或‘bank_new.csv’文件都可以:
(1)罗列式
#输出excel
output_excel = {'age':[],'job':[],'marital':[],'education':[],'default':[],'balance':[],'housing':[],'loan':[],'contact':[],'day':[],'month':[],'duration':[],'campaign':[],'pdays':[],'previous':[],'poutcome':[]}
output_excel['age'] = age
output_excel['job'] = job
output_excel['marital'] = marital
output_excel['education'] = education
output_excel['default'] = default
output_excel['balance'] = balance
output_excel['housing'] = housing
output_excel['loan'] = loan
output_excel['contact'] = contact
output_excel['day'] = day
output_excel['month'] = month
output_excel['duration'] = duration
output_excel['campaign'] = campaign
output_excel['pdays'] = pdays
output_excel['previous'] = previous
output_excel['poutcome'] = poutcome
output = pd.DataFrame(output_excel)
output.to_excel('bank_new.xlsx',index=False)
(2)循环式
def output_all(num):
i = 0
while i<num:
for name in output_excel.keys():
output_excel[name] = globals()[name]
i = i+1
output = pd.DataFrame(output_excel)
output.to_excel('bank_jian.xlsx',index=False)
output_all(16)
我们这样就得到了一个多列的Excel表格。