美文网首页python学习Python语言与信息数据获取和机器学习我爱编程
python 利用pandas处理excel数据(获取特定值,排

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

作者: 五长生 | 来源:发表于2017-07-15 00:29 被阅读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')  # 保存文件
        #
    

    相关文章

      网友评论

        本文标题:python 利用pandas处理excel数据(获取特定值,排

        本文链接:https://www.haomeiwen.com/subject/kjfahxtx.html