这是06年的建模题目中的excel文件,我想这用python处理一下,只需要获取出版社代码为P115的数据,所以需要筛选。
Paste_Image.png1、首先我先选择我所需要的那八行数据
- '出版社代码'
- '出版社在您心中的位置'
- '学科类别',
- '定价'
- '教材内容新颖,保持学术前沿水平'
- '教材的作者是相应领域的权威,所以课程理论基础扎实'
- '教材印刷及排版质量'
- '教材价格'
2、以P115为键值进行筛选
Paste_Image.png3、获取我们所需要的数据
使用df=Datafram(data,columns=[])#data的是原数据,coulumns是我们所需要的索引,df是一个新的pandas的对象。
一般列数较大的话我用的pycharm显示不出来,所以其余的部分在下面是完整的。
4、然后进行下一布以某一列数据进行排序
data1=data1.sort_values(by='学科类别')
over 排序完成
接下来就可以用这些数据画图然后看看这些东西互相是怎么个关系
所有代码在这里,挺简单的,换一个别的东西随便就可以用了
import xlrd
import pandas as pd
import xlwt
for i in range(2001,2006):#处理从2001年到2005年的数据
string=str(i)#转化成字符串
data = pd.read_excel('附件2_问卷调查数据(五年).xls',sheetname=string)#pandas读取excel的函数
if (i == 2001) or (i == 2002) or (i == 2005):#为什么这里要用if语句呢,因为我得到的excel文本,有两个sheet的想要索引的
df = data[data.出版社代码 == 'P115']#字符有不一样的,一个前面有空格一个前面没有空格
else:
df=data[data.出版社代码== ' P115']
#下面这个语句是以这键值重新组合成一个pandas,以columns里的为索引
data1=pd.DataFrame(df,columns=['出版社在您心中的位置','学科类别','定价','教材内容新颖,保持学术前沿水平','教材的作者是相应领域的权威,所以课程理论基础扎实','教材印刷及排版质量','教材价格'])
print(df)
data1=data1.sort_values(by='学科类别')#sort是以学科类别为标准排序
data1.to_excel(string+'.xls',sheet_name='string', encoding='utf-8')
#储存到当前目录下,但是有一点我不知道可不可以做好,这个可以储存到五个excel里面,但是我弄不出来把他们放到一个excel
# 里面的五个标签页里,好气啊
介绍个利器:
df.课程名称.str.len()<3
这个表示所有这一个列表的字符串长度不超过3
几天后简化的版本
import pandas as pd
for i in range(2001,2006):
df = pd.read_excel('重新处理.xls',sheetname=str(i))
df['课程名称'] = df['课程名称'].astype(str)#转换类型
df=df[(df.教材获得方式 == 1)&(df.是否为旧书 == 1)&(df.课程名称<='72')&(df.课程名称>='0')]
df=pd.DataFrame(df,columns=['A出版社在您心中的位置','课程名称','学科类别','教材内容新颖,保持学术前沿水平','教材的作者是相应领域的权威,所以课程理论基础扎实','教材印刷及排版质量','教材价格'])
df = df.sort_values(by='课程名称')#排序
df=df.reset_index(drop=True)#重建索引
df.to_excel(str(i)+'.xls',sheet_name='string', encoding='utf-8')#保存文件
一些其他的代码,不用看了
import pandas as pd
import numpy as np
A=[]
for x in range(2001,2006):
Z=[]
X=[]
df = pd.read_excel('满意度新.xlsx',sheetname=str(x))
X = df.课程名称.value_counts()
df=df[df.出版社代码=='P115']
df = df.reset_index(drop=True) # 重建索引
Z=df.课程名称.value_counts()
for i in range(1, 73):
try:
print(X[i])
except KeyError:
X[i] = 100000000
print(X[i])
for i in range(1,73):
try:
print(Z[i])
except KeyError:
Z[i]=0
print(Z[i])
for i in range(1, 73):
A.append((Z[i]/X[i])*100)
print(A)
A=np.array(A).reshape(72,5)
A=pd.DataFrame(A)
A.to_excel('占有率新的.xls')
# for i in range(1,73):
# Z.append(list(df[df.课程名称 == i].mean()))
# Z=pd.DataFrame(Z)
# Z=Z.fillna(0)
# Z.to_excel(str(x) + 'p115满意度.xls', sheet_name='string', encoding='utf-8') # 保存文件
#
网友评论