python学习Python语言与信息数据获取和机器学习我爱编程

python 利用pandas处理excel数据(获取特定值,排

2017-07-15  本文已影响5553人  五长生

这是06年的建模题目中的excel文件,我想这用python处理一下,只需要获取出版社代码为P115的数据,所以需要筛选。

Paste_Image.png

1、首先我先选择我所需要的那八行数据

2、以P115为键值进行筛选

Paste_Image.png

3、获取我们所需要的数据
使用df=Datafram(data,columns=[])#data的是原数据,coulumns是我们所需要的索引,df是一个新的pandas的对象。

Paste_Image.png

一般列数较大的话我用的pycharm显示不出来,所以其余的部分在下面是完整的。

4、然后进行下一布以某一列数据进行排序
data1=data1.sort_values(by='学科类别')

Paste_Image.png Paste_Image.png

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')  # 保存文件
    #
上一篇下一篇

猜你喜欢

热点阅读