python数据分析,用python对excel表格操作

用python操作excel表格,进行数据分析

项目场景:

提示:通常我们对excel表格进行删除多个项的时候,如果一条一条的删除就会花费很多时间,并且也不知道要删除的部分是否删除完,进行查询,分类的时候用python语言几条语句就能简单的完成要求。
例如:从一个有很多条学生信息的excel表中按要求进行操作
excel表格的列项


代码展示:

首先在软件中导入excel表格,即用python打开csv文件

from pandas import Series,DataFrame
import pandas as pd
import numpy as np
import csv
import codecs

data_csv = pd.read_csv("d:/shiyan.csv",encoding = "gbk")

data_csv  #就能在python软件中打印出要查找的信息

将数据以文件形式导出保存

data_csv.to_csv('d:/1.csv')  #以csv形式存储
data_csv = data_csv.to_excel("d:/1.xls")   #以excel表形式存储

删除后两列所有信息

data_csv = data_csv.drop(['任选课类别_显示值','考试类型_显示值'],axis=1)  

针对表中的字要修改的进行统一修改

data_csv=data_csv.replace(['合格','良好'],[60,80])#军训分数栏的文字修改为分数合格对应60分,良好对应80分

特定要求筛选

data0_csv = data_csv[data_csv['学号']>20120000]  #筛选出学号大于2012000的学生信息  
data0_csv = data_csv[data_csv['院系_显示值'] == '文学与新闻传播学院']   #从所以的信息总分离出文传学院的数据
TeamID1 = data_csv[data_csv['TeamID'] == 1]  #显示出第一学期的数据

分组

#group用来分组
group = TeamID1['成绩'].groupby(TeamID1['学号']) #以每个学号进行分组,并保留下每个学号的每个课成绩
#agg用来聚合
a = group.agg(['sum']+['mean']+['max']+['min']+['count'])

用python函数对成绩进行分析,count=9表明有9门学科
python数据分析,用python对excel表格操作_第1张图片

a.columns=['总分','每学期该专业平均分','每学期该专业最高分','每学期该专业最低分','每学期该专业考试门数']

python数据分析,用python对excel表格操作_第2张图片

分别用迭代递归缓存求斐波拉契数列

python数据分析,用python对excel表格操作_第3张图片

from tkinter import *                
import easygui 
import time
master = Tk()
frame = Frame(master)  # 确定一个框架用于美观 
frame.pack(padx = 20,pady = 20)

v1 = StringVar() # 分别用于储存需要计算的数据和 结果
v2 = StringVar()
v3 = StringVar()
v4 = StringVar()
v5 = StringVar()
v6 = StringVar()

def test(content):
     return content.isdigit()  # 检查是不是数字 .
testCMD = frame.register(test)  # 将函数 进行包装 . 
Label(frame,text='迭代算法:',padx=10).grid(row=0,column=0)
    
 # %p 是输入框的最新内容 . 当输入框允许改变的时候该值有效 ,
Label(frame,text='输入项数:',padx=10).grid(row=0,column=2)
e2 = Entry(frame,width=10,textvariable=v1,validate='key',\
          validatecommand=(test,'%p')).grid(row=0,column=3)

Label(frame,text='结果',padx=10).grid(row=0,column=4)
e3 = Entry(frame,width=15,textvariable=v2,state='readonly').grid(row=0,column=5)

Label(frame,text='花费时间:',padx=10).grid(row=0,column=6)
e4 = Entry(frame,width=15,textvariable=v3,state='readonly').grid(row=0,column=7)

Label(frame,text='递归算法:',padx=10).grid(row=1,column=0)
    
 # %p 是输入框的最新内容 . 当输入框允许改变的时候该值有效 ,
Label(frame,text='输入项数:',padx=10).grid(row=1,column=2)
e5 = Entry(frame,width=10,textvariable=v4,validate='key',\
          validatecommand=(test,'%p')).grid(row=1,column=3)

Label(frame,text='结果',padx=10).grid(row=1,column=4)
e6 = Entry(frame,width=15,textvariable=v5,state='readonly').grid(row=1,column=5)

Label(frame,text='花费时间:',padx=10).grid(row=1,column=6)
e7 = Entry(frame,width=15,textvariable=v6,state='readonly').grid(row=1,column=7)


def calc():
    if v1.get()=='':
        easygui.msgbox('请先输入内容 !')
        return 
    result1 = fibonacci3(12)
    v2.set(result1)
    result2 = Time3()
    v3.set(result2)
    

    
def calc():
    if v4.get()=='':
        easygui.msgbox('请先输入内容 !')
        return 
    result1 = fibonacci1()
    v5.set(result1)
    result2 = Time3()
    v6.set(result2)
    
    
"""def test():
    if e1.get() == 'f1':
        print("正确") 
        fibonacci3(10)
        #
        return True
    else:
        fibonacci3(5)
        print('错误')
        e1.delete(0,END)
        return False   """
#递归
def fibonacci1(n):
    # base case
    if n==0 or n==1:
        return 1
    # recurssive case
    else:
        return fibonacci1(n-1) + fibonacci1(n-2)
#print ([fibonacci1(i) for i in range(32)])
    

def Time3():
    start_CPU = time.clock()
    fibonacci3(32)
    end_CPU = time.clock()
    return end_CPU - start_CPU

def fibonacci3(n):
    a, b = 0, 1
    for i in range(1, n+1):
        a, b = b, a+b
    return b
#print ([fibonacci3(i) for i in range(32)])

Button(frame,text='结果1',command=calc).grid(row=4,column=3,pady=15)
Button(frame,text='结果2',command=calc).grid(row=4,column=4,pady=15)

mainloop()

斐波拉契数列:

def calc1():
    if v1.get()=='':
        easygui.msgbox('请先输入内容 !')
        return 
    result1 = fibonacci1(v1.get())
    v2.set(result1)
    result2 = Time1()
    v3.set(result2)

def fibonacci1(n):
    a, b = 0, 1
    for i in range(1, n+1):
        a, b = b, a+b
    return b

#迭代    
def Time1(n):
    start_CPU = time.clock()
    fibonacci1(n)
    end_CPU = time.clock()
    return end_CPU - start_CPU

知识扩充:

CSV:

csv是最通用的一种文件格式,它可以非常容易地被导入各种PC表格及数据库中。此文件,一行即为数据表的一行。生成数据表字段用半角逗号隔开。csv文件用记事本和excel都能打开,用记事本打开显示逗号,用excel打开,没有逗号了,逗号都用来分列了,还可有Editplus打开。

python常用的科学计算库:

Numpy:
Pandas
Scipy


你可能感兴趣的:(python数据分析,python,数据分析,excel)