总结一些最近为准备面试而准备的一些知识,今天总结一下python不用Pandas包和用pandas包处理数据集
自定义数据集:
Id,名称,数学,英语,语文
1,xiaohong,98,87,23
.........
#coding=utf8
import pandas as pd
from pandas import DataFrame,Series
#不使用pandas包处理表格数据
dic={}
with open("test.csv",'r') as f:
lines=f.readlines();
line=lines[2:-1]
#计算每个人的总分
#计算每个人不及格的门数
#按总分排名
for lin in line:
li=lin.split(",")
count=sum(int(x) for x in li[1:])
su=sum([1 for x in li[1:] if int(x)<60])
dic[li[0]]=(count,su)
sorted(dic.iteritems(),key=lambda x:x[1][0],reverse=False)
#计算每门功课的最高成绩和姓名
dc={}
lis1={}
lis2={}
lis3={}
for lin in line:
li=lin.split(",")
lis1[li[0]]=int(li[1])
lis2[li[0]]=int(li[2])
lis3[li[0]]=int(li[3])
dc["math"]=lis1
dc["english"]=lis2
dc["chinese"]=lis3
for dic in dc.iteritems():
tmp=dic[1]
mx=sorted(tmp.iteritems(),key=lambda x:x[1],reverse=True)
print dic[0],mx[0]
#使用pandas包处理表格数据
data=pd.read_csv("test.csv")
data=data[:len(data)-1]
data["sum"]=0
#计算每个人的总分,放在最后一列
for i in range(0,len(data)):
data["sum"][i]=sum(data.ix[i,1:])
#按总分排名
data=data.sort_index(by="sum")
#计算每门功课的最高成绩和姓名
for k in data.columns[1:len(data.columns)]:
data[data[k]==max(data[k])][["name",k]]
#计算每个人不及格的门数
for j in range(len(data)):
count=0
for k in range(len(data.ix[j,])):
if(data.ix[j,k]<60):
count+=1
#print data.ix[j,0]
使用pandas包还是简单一些,而且实现过程所花费的时间也少一些,所以数据处理推荐使用pandas包。