티스토리 뷰

BigData

가격 분석 예제

Y.일월 2019. 9. 16. 09:50

품목코드가 '111'와 '214'인 물건의 가격의 합계, 평균값, 최대값, 최소값, 최빈값, 총 개수 출력


Data.java

import java.io.BufferedReader;

import java.io.FileNotFoundException;

import java.io.FileReader;

import java.io.IOException;

import java.util.ArrayList;

import java.util.Arrays;

import java.util.List;


public class Data {

private String url = "";

private int code;

private int total = 0;

private int max, min,avg;

private int modeMax;

private int modeCount;

//생성자

Data(String url, int code){

this.url = url;

this.code = code;

}

//ReadData method

List<Integer> ReadData(){

List<Integer> list = new ArrayList<Integer>();

try {

//데이터 읽어오기

FileReader fr = new FileReader(url);

BufferedReader br = new BufferedReader(fr);

String line = "";

while((line=br.readLine()) != null) {

if(line.split(",")[2].equals(""+code)) { //품목코드에 맞는  가격 추출 및 list에 저장

list.add(Integer.parseInt(line.split(",")[5]));

}

}

//예외처리

} catch (FileNotFoundException e) {

// TODO Auto-generated catch block

System.out.println("FileNotFound");

} catch (IOException e) {

System.out.println("IOException");

}

return list;

}

void DataAnalysis() {

List<Integer> price = ReadData();

max = price.get(0); //최대값을 초기화

min = price.get(0); //최소값을 초기화

for(int i=0; i<price.size(); i++) {

total += price.get(i); //총합값 계산


if(max < price.get(i))

max = price.get(i); //최대값이 price.get(i)보다 작으면 max에 price.get(i) 저장

if(min > price.get(i))

min = price.get(i); //최소값이 price.get(i)보다 크면 min에 price.get(i) 저장


}

avg = total/price.size();

//빈도수, 최빈값 계산

int[] mode = new int[max-min+1]; //빈도수 계산을 위한 int형 배열 mode 선언 

//(데이터 최대값 - 최소값 + 1 = mode의 크기)

Arrays.fill(mode, 0); //mode를 전체 0으로 초기화

//빈도수 계산

for(int i=0; i<price.size(); i++) {

int tmp = price.get(i) - min; //tmp의 처음 값은 0 

mode[tmp]++;

}

//최빈값 게산

modeMax = mode[0];

modeCount = min;

for(int i=0; i<mode.length; i++) {

if(modeMax<mode[i]) {

modeMax = mode[i];

modeCount = i+min;

}

}

}


@Override

public String toString() {

return "Data("+code+") [평균=" + avg + ", 합계=" + total + ", 최대값=" + max + ", 최소값=" + min

+ ", 빈도수=" + modeMax + ", 최빈값=" + modeCount + "]";

}

}



DataEx.java

public class DataEx {


public static void main(String[] args) {

// TODO Auto-generated method stub

Data data = new Data("분석데이터 위치 url",111);

data.DataAnalysis();

System.out.println(data.toString());

Data data2 = new Data("분석데이터 위치 url",214);

data2.DataAnalysis();

System.out.println(data2.toString());

}

}





분석할 데이터

product.csv


'BigData' 카테고리의 다른 글

성적 분석  (0) 2019.09.16
공지사항
최근에 올라온 글