joinery的一些使用方法
简单说一下,因为要在java里像python的panda一样灵活的处理数据,于是我便百度了一下,便找到了joinery。
以下是官方文档,本文所有内容基本都能在官方文档找到。
https://joinery.sh/v1.10/api/reference/joinery/DataFrame.html
本文有很多方法没介绍到,例如官方文档给的怎么创建一个表:
List<List<Object>> data = Arrays.asList(
Arrays.<Object>asList("alpha", "bravo", "charlie"),
Arrays.<Object>asList(1, 2, 3)
);
DataFrame<Object> df = new DataFrame<>(data);
df.row(0);
更多方法请看官方文档
在maven项目中引入依赖
<dependency>
<groupId>sh.joinery</groupId>
<artifactId>joinery-dataframe</artifactId>
<version>1.10</version>
</dependency>
import
import joinery.DataFrame;
readCsv
读取Csv内的数据:
DataFrame<Object> dataFrame = DataFrame.readCsv(DataPath);
System.out.println(dataFrame);
columns
返回列名
System.out.println(dataFrame.columns());
index
返回所有行
System.out.println(dataFrame.index());
col
取某一列一整列的数据
System.out.println(dataFrame.col("Category"));
不过不一定是要列名,还可以用第几列:
System.out.println(dataFrame.col(0));
get
用来获取某一个位置的数据
System.out.println(dataFrame.count().get(0, 0));
除了用这种坐标的方式,亦可以用行名和列名,官方文档给的:
DataFrame<Object> df = new DataFrame<Object>(
Arrays.asList("row1", "row2", "row3"),
Arrays.asList("name", "value"),
Arrays.asList(
Arrays.asList("alpha", "bravo", "charlie"),
Arrays.asList(10, 20, 30)
)
);
df.get("row2", "name");
输出: bravo
count
用来记总数:
System.out.println(dataFrame.count());//输出行数
用来准确获取某一列的行数:
System.out.println(dataFrame.count().get(0, 0));
length
System.out.println(dataFrame.length());
types
看各列的值的类型
System.out.println(dataFrame.types());
cast
改变类型,官方给出的示例:
DataFrame<Object> df = new DataFrame<>("name", "value");
df.append(Arrays.asList("one", "1"));
DataFrame<String> dfs = df.cast(String.class);
dfs.get(0, 0).getClass().getName();
java.lang.String
max,min,mean,prod
max返回最大值,min返回最小值,mean返回平均值,prod返回乘积
System.out.println(dataFrame.prod().col("id"));//要用其他三个把中间的prod换成其他三个即可