python切片的练习
League of Legends
League of Legends.xls
题目:1 将表格信息读取出来,并将蓝色精粹字段的值进行分区间调整
2 读取数据时只将字段英雄名称和英雄称号读取出来
3 读取数据时只提取"虚空遁地兽"和"暗裔剑魔"这两个称号所在行及其中间行的全部内容
读取全部数据后用切片的方式完成4-9操作
4 把从"熔铁少女"所在行开始至"魔法猫咪"所在行结束及其之间的内容展示出来
5 把加入时间所在列的内容展示出来
6 把英雄名称和蓝色精粹所在列的内容展示出来
7 把英雄称号所在列及其之后的列的内容展示出来
8 把蓝色精粹之前的列的内容展示出来
9 把腕豪、血港鬼影和它们两个各自对应的蓝色精粹列中的值,共同合围起来的区域显示出来
10 把每年12月加入的英雄人物及其全部属性提取出来。
11 把其中提取出来的结果存档至新的文件。
在构建ndarray数组、存档文本文件、从文本文件中提取内容
import numpy as np
onearray=np.loadtxt('League of Legends.csv',dtype=str,delimiter=',',skiprows=1)
twoarray=onearray[::,-1:-2:-1].flatten()
# emptylist=[]
# for i in range(len(twoarray)):
# temp=eval(twoarray[i])
# if temp % 6==0 and temp % 8!=0:
# print(onearray[i:i+1:,::])
# emptylist=[]
# for i in range(len(twoarray)):
# if '年' in twoarray[i] and '月' in twoarray[i]:
# temp=twoarray[i]
# if temp[twoarray[i].index('年')+1:twoarray[i].index('月')] == '12':
# # print(temp)
# emptylist.append(onearray[i:i+1,::])
# print(emptylist)
# print(twoarray)
# print(onearray[i:i+1:,::])
#第二部分
# flag=True
# for i in range(len(twoarray)):
# temp=twoarray[i]
# if '年12月' in temp:
#
# if flag == True:
# record=onearray[i]
# flag=False
# else:
# record=np.vstack((record,onearray[i]))
# print(record)
#第三部分
emptydic={}
emptylist=[]
for i in range(len(twoarray)):
temp=twoarray[i]
month=temp[temp.index('年')+1:temp.index('月')]
if month in emptydic.keys(): #emptydic.keys() i是月份 ,键名
emptydic[month]=np.vstack((emptydic[month],onearray[i]))
else:
emptydic[month]=onearray[i] #?
def sortvalue(value): # list sort
return int(value[0])
for i in emptydic.keys():
temp=emptydic[i]
emptydic[i]=temp[::-1,::]
emptylist.append((i,emptydic[i])) #emptydic[i] i是月份 ,键名
for i in emptylist:
emptylist.sort(key=sortvalue,reverse=False)
print(emptydic[month])
2.使用DataFrame,切片操作,对Excel表进行处理
以章节2.7中数据存取练习中的附件Excel中的数据作为原始数据集,在去除首行表头和首列内容后,将英雄称号列中的内容分别设置成英雄名称、点券价格、蓝色精粹、加入时间所在列内容的索引。提交Python原码文件
import pandas as pd
import numpy as np
onedic={}
onearray=np.loadtxt('League of Legends.csv',dtype=str,delimiter=',')
# print(onearray)
twoarray=onearray[1::,-1::].flatten()
# [['序号' '英雄称号' '英雄名称' '点券价格' '蓝色精萃' '加入时间']]
# twoarray=onearray[:1:,::]
# print(twoarray)
# i从0开始
for i in range(len(twoarray)):
temp=twoarray[i]
month=temp[temp.index('年')+1:temp.index('月')]
''' month in onedic.keys() month为键值'''
if month in onedic.keys():
onedic[month]=np.vstack((onedic[month],onearray[i+1:i+2,::]))
else:
# 除标头,从第一行开始
onedic[month]=onearray[i+1:i+2,::]
# dict_keys(['2', '1', '9', '7', '4', '12', '10', '8', '11', '6', '5', '3'])
# print(onedic.keys())
# print(onedic)
emptylist=[]
for i in onedic.keys():
emptylist.append([i,onedic[i]]) #append() 元组
# print(emptylist[0][1])
# print(emptylist[0][1].transpose((1,0)))
# threearray=emptylist[0][1].transpose((1,0))
# fourarray=threearray[1::,::][::-1,::]
# fivearray = fourarray[1::, ::]
# print(fivearray)
# fourarray=threearray[1::,::][::-1,::]
for i in emptylist:
temp=i
tupleitem=temp[1]
# print(emptylist[0][1])
# print(emptylist[0][1].transpose((1,0)))
threearray=tupleitem.transpose((1,0))
# print(threearray)
fourarray=threearray[1::,::][::-1,::]
column=fourarray[:1:,::].flatten()
index=onearray[:1:,-2:-6:-1].flatten()
fivearray=fourarray[1::,::]
oneframe = pd.DataFrame(fivearray, index=index, columns=column)
print('---------------------------')
print(oneframe)
# print(onedic)
# oneframe=pd.DataFrame(onearray[1::],index=range(159,0,-1),columns=onearray[:1:,::].flatten())
# print(oneframe)
```