Allen's 데이터 맛집

[2] Java를 사용한 간단한 범죄 통계 데이터 분석 본문

etc Project/범죄 데이터 간단한 분석

[2] Java를 사용한 간단한 범죄 통계 데이터 분석

Allen93 2024. 9. 3. 11:12
이번엔 Java를 사용하여 범죄 통계 데이터를 분석하는 방법을 소개하겠습니다. 특히, CrimeStatistics 클래스를 사용하여 CSV 파일에서 데이터를 읽고, 이를 분석하여 통계 정보를 도출해 보겠습니다.

 

코드 설명

 

전체 코드

import java.io.*;

public class CrimeStatistics {
    public static void main(String[] args) {
        String[][] indat = new String[50][20];
        double[][] inndat = new double[50][20];

        try {
            File csv = new File("C:\\Users\\82108\\Desktop\\Tools\\2016_Criminal_Record.csv");
            BufferedReader br = new BufferedReader(new FileReader(csv));
            String line = "";
            int row = 0;
            int i = 0;

            while ((line = br.readLine()) != null) {
                String[] token = line.split(",");
                for (i = 0; i < 15; i++) {
                    indat[row][i] = (token[i]);
                    String str = indat[row][i];
                    str = str.replaceAll("\\-", "0");
                    indat[row][i] = str;
                }
                row++;
            }

            for (int y = 1; y < 39; y++) {
                for (int x = 2; x < 4; x++) {
                    int value = Integer.parseInt(indat[y][x]);
                    inndat[y][x] = value;
                }
            }

            double sum = 0;
            for (int y = 1; y < 39; y++) {
                sum = inndat[y][3] / inndat[y][2];
                System.out.printf("%s %.2f%% \n", indat[y][1], sum * 100);
            }
            br.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

 

 


코드 설명

  1. 변수 초기화:
String[][] indat = new String[50][20];
double[][] inndat = new double[50][20];

 

  • indat 배열은 CSV 파일에서 읽어온 문자열 데이터를 저장합니다.
  • inndat 배열은 문자열 데이터를 정수로 변환한 값을 저장합니다.

 

2. CSV 파일 읽기:

File csv = new File("C:\\Users\\82108\\Desktop\\Tools\\2016_Criminal_Record.csv");
BufferedReader br = new BufferedReader(new FileReader(csv));
String line = "";
int row = 0;
int i = 0;

while ((line = br.readLine()) != null) {
    String[] token = line.split(",");
    for (i = 0; i < 15; i++) {
        indat[row][i] = (token[i]);
        String str = indat[row][i];
        str = str.replaceAll("\\-", "0");
        indat[row][i] = str;
    }
    row++;
}

 

 

  • CSV 파일을 읽어와 BufferedReader 객체를 사용하여 각 줄을 읽습니다.
  • 각 줄을 쉼표(,)로 분리하여 indat 배열에 저장합니다.
  • 값이 없는 경우(-)를 0으로 대체합니다.

 

3. 데이터 변환:

for (int y = 1; y < 39; y++) {
    for (int x = 2; x < 4; x++) {
        int value = Integer.parseInt(indat[y][x]);
        inndat[y][x] = value;
    }
}

 

 

  • indat 배열의 문자열 데이터를 정수로 변환하여 inndat 배열에 저장합니다.

 

 

4. 통계 정보 계산 및 출력:

double sum = 0;
for (int y = 1; y < 39; y++) {
    sum = inndat[y][3] / inndat[y][2];
    System.out.printf("%s %.2f%% \n", indat[y][1], sum * 100);
}
br.close();

 

  1. inndat 배열의 값을 사용하여 특정 통계 정보를 계산합니다.
  2. 계산된 값을 형식에 맞게 출력합니다.

 

 

https://github.com/siilver94/Analyze-Data-in-CSV

 

GitHub - siilver94/Analyze-Data-in-CSV

Contribute to siilver94/Analyze-Data-in-CSV development by creating an account on GitHub.

github.com

 

728x90