本周我正在研究数据结构和cvs文件。我理解如何读取cvs文件,我对文件中的列做了平均值,但我不能做中位数和模式。我的代码只显示了特定的列。我想做中位数和模式。谁能帮助我如何从我想要的列中获得中位数和模式?
"CalforniaSchool.cvs"
school name students teachers
C.H.S 1203 45
D.H.S 1023 67
E.H.S 902 34
A.H.S 1280 89
ArrayList<String>medianmode=Files.readAllLines(Paths.get("CalforniaSchool.file"));
String []final=medianmode.split(",");
double close = Double.parseDouble(final[2]);//i want to do median and mode for column 2
答案 0 :(得分:0)
apache常用数学库中有几个函数,你在这里: mean
还有一些实现:
平均:
public static int median(int[] m) {
int middle = m.length/2;
if (m.length%2 == 1) {
return m[middle];
} else {
return (m[middle-1] + m[middle]) / 2.0;
}
}
模式:
public static List<Integer> mode(final int[] a) {
final List<Integer> modes = new ArrayList<Integer>();
final Map<Integer, Integer> countMap = new HashMap<Integer, Integer>();
int max = -1;
for (final int n : numbers) {
int count = 0;
if (countMap.containsKey(n)) {
count = countMap.get(n) + 1;
} else {
count = 1;
}
countMap.put(n, count);
if (count > max) {
max = count;
}
}
for (final Map.Entry<Integer, Integer> tuple : countMap.entrySet()) {
if (tuple.getValue() == max) {
modes.add(tuple.getKey());
}
}
return modes;
}
如果你正在使用python,它会比带有pandas的java更容易。如果你还想坚持java,我强烈建议你自己逐行实现它们。
最佳。