数据是从Kaggle上下载的,大致是一个印度大学对学生在毕业后就业情况的调查,主要是MBA的学生。
大致长这样:15列,215行
这份数据基本没有什么需要修改或者完善的(也就是清理)地方。但我还是进行了几个步骤。
1.是否有填null
public static boolean checkNull(String value){
return value==null||"null".equalsIgnoreCase(value)||value=="";
}
//返回某一列的所有不同取值
public static String allDifferentValues(int column,String data[][]){
String values=data[0][column];
for(int i=1;i<215;i++){
if(!values.contains(data[i][column])){
values+=", " + data[i][column];
}
}
return values;
}
//检验数值型最大最小
public static String checkForMaxMin(int column,String data[][],int min,int max){
String check="";
for(int i=1;i<215;i++){
if(Double.parseDouble(data[i][column])>=max||Double.parseDouble(data[i][column])<=min){
check+="第" + i + "行第" + column + "列的数据超出预期范围" + "\n";
}
}
if(!check.contains("的")){
check="第" + column + "列的数据都在预期范围之内";
}
return check;
}
4.从CSV里读到数组里。最后第十五行因为没有找到工作的就没有填薪水所以我填上了0.
public static String[][] readCSVAndCheckNull(int lines,int columns){
String[][] data=new String[lines][columns];
try(BufferedReader bufferedReader=new BufferedReader(new FileReader("Placement_Data_Full_Class.csv"))){
String columnNames=bufferedReader.readLine();
System.out.println(columnNames);
String line;
int m=0,n;
while((line=bufferedReader.readLine())!=null){
CSVParser parser=CSVParser.parse(line, CSVFormat.DEFAULT);
//按行读取
for(CSVRecord csvRecord:parser){
//检查一行中是否有空值null
boolean ContainNull=false;
for(int i=0;i<15;i++){
boolean j=checkNull(csvRecord.get(i));
if(j==true){
ContainNull=true;
}
}
for(n=0;n<columns-1;n++) {
data[m][n] = csvRecord.get(n);
}
if(csvRecord.get(14).equals("")){
data[m][14]="0";
}else{
data[m][14]=csvRecord.get(14);
}
String note=ContainNull?"含有null":"不含null";
System.out.println(data[m][0]+ " " +note);
m++;
}
}
}catch(Exception e){
System.out.println(e.getMessage());
}
return data;
}
以上没有涉及分析阶段。我还会继续更的。
======================
下面是废话:
最近还在学javaweb,在写一个小的系统。经常出错,最一开始一个错我要看好久,现在看报错已经速度加快了。现在这个网页前后端没有分开,在这个网页做完后,我要开始看springboot和其它一些东西。还有好多要看的书,希望暑假结束前能看的差不多。
版权声明:本文为weixin_43444618原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。