对于操作csv文件,pandas是一个很好的工具,比如分析部分学生的成绩:
import pandas as pd
#读入数据文件
data1=pd.read_csv('students_grade1.csv')
>>>>
Unnamed: 0 学号 语文 数学 英语
0 0 20167598 89 89 89
1 1 20167589 85 85 85
2 2 20164569 52 52 52
data的数据类型是dataframe
这时想要选择全部学生的语文成绩
data1['语文']
>>>>
0 89
1 85
2 52
Name: 语文, dtype: int64
pandas的每一行都是可以用于计算的,比如计算出总成绩并加在最后一行
data1.loc[:,'总成绩']=data1['语文']+data1['数学']+data1['英语']
data1
>>>>
Unnamed: 0 学号 语文 数学 英语 总成绩
0 0 20167598 89 89 89 267
1 1 20167589 85 85 85 255
2 2 20164569 52 52 52 156
其中Unmanned:0是pandas加的一个索引,你可以删除他,1表示删除所在列
data1=data1.drop('Unnamed: 0',1)
data1
>>>>
学号 语文 数学 英语 总成绩
0 20167598 89 89 89 267
1 20167589 85 85 85 255
2 20164569 52 52 52 156
选择总成绩大于200小于260的学生
data1[(data1['总成绩']>200)&(data1['总成绩']<260)]
>>>>
学号 语文 数学 英语 总成绩
1 20167589 85 85 85 255
再读入一个学生成绩,并把两个数据合并起来
#读入数据
data2=pd.read_csv('students_grade2.csv')
data2=data2.drop('Unnamed: 0',1)
#数据合并
data=pd.concat([data1,data2],ignore_index=True)
>>>>
学号 语文 数学 英语 总成绩
0 20167598 89 89 89 267
1 20167589 85 85 85 255
2 20164569 52 52 52 156
3 20167598 85 89 89 263
4 20167589 55 95 85 235
5 20164569 82 62 82 226
pd.concat的参数设置可以看我本栏里的另一篇文章
最后,把生成的数组保存到一个新的csv文件里
data.to_csv('students_grade_all.csv')
如果想要自己建立一个空dataframe,那么就是
data =pd.DataFrame(columns=('学号','语文','数学','英语'))
如果想要使用已有的数组生成一个dataframe,那么就要先把这些数组写成一个字典
#生成数据
a=[1,2,5,6]
b=[5,8,9,1]
#写成字典
dic={'A':a,'B':b}
#把字典生成对应的dataframe
data=pd.DataFrame(dic)
data
>>>>
A B
0 1 5
1 2 8
2 5 9
3 6 1