测试数据(xx.txt):

a 1
a 2
b 3
c 4
d 5
c 6
b 7
a 8
x 9

一、SQL 分组求和

SELECT key, SUM(val)
FROM kv
GROUP BY key

二、Python 编码实现分组求和(pip install pandas)

import reimport pandas as pd
from matplotlib import pyplot as pltlines = []
with open(r"pandas_group_sum.txt") as f:lines = f.read().splitlines()
print(len(lines))p = re.compile(r'(?P<key>\S*)\s*(?P<val>\S*)')kvs = []
for line in lines:m = p.match(line)if m:# print(line)kvs.append((m.group("key"), int(m.group("val"))))df = pd.DataFrame(kvs, columns=["key", "val"])
# print(df.dtypes)# 注:先创建空的`DataFrame`,再追加数据,该方式已过时。
# df = pd.DataFrame(columns=["key", "val"])
# for kv in kvs:
#     df = df.append({"key":kv[0], "val": int(float(kv[1]))}, ignore_index=True)# 设置 `pandas` 打印展示效果
# 显示最大列数,None 为全部
pd.set_option('display.max_columns', None)
# 显示最大行数,None 为全部
pd.set_option('display.max_rows', None)
# 显示每列字段最大宽度
pd.set_option('max_colwidth', None)
# 显示行宽度
pd.set_option('display.width', None)# 分组求和
df = df.groupby(["key"], as_index=True).sum().sort_values("val", ascending=False)# 结果打印
print(df)# 结果输出到 excel
# df.to_excel("结果.xlsx")# 结果绘图
# 设置中文
plt.rcParams['font.sans-serif'] = ['SimHei']
# 坐标轴负号显示不正常及不能正常显示中文
plt.rcParams['axes.unicode_minus'] = False
# 默认为折线图
df.plot(kind='bar', title="统计图", figsize=(12, 8), legend=True, fontsize=18)plt.show()

三、Java 编码实现分组求和 (import sh.joinery:joinery-dataframe 库)

① `pom.xml` 引入相关依赖:

<!-- joinery 科学计算 -->
<dependency><groupId>sh.joinery</groupId><artifactId>joinery-dataframe</artifactId><version>1.10</version>
</dependency><dependency><groupId>com.xeiam.xchart</groupId><artifactId>xchart</artifactId><version>2.3.1</version>
</dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>4.1.2</version>
</dependency>
<!-- joinery 科学计算 END -->

② 代码实现

package org.kwok.joinery;import java.nio.charset.Charset;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.Arrays;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;import joinery.DataFrame;/*** 使用 sh.joinery:joinery-dataframe 库进行分组求和* 类似 Python pandas 库* @author Kwok* 2022-11-06*/
public class Test_Joinery {public static void main(String[] args) throws Exception {System.out.println(Paths.get(Test_Joinery.class.getResource("Test_Joinery.txt").toURI()));List<String> lines = Files.readAllLines(Paths.get(Test_Joinery.class.getResource("Test_Joinery.txt").toURI()), Charset.defaultCharset());DataFrame<Object> df = new DataFrame<Object>("key", "value");Pattern p =Pattern.compile("(?<key>\\S*)\\s*(?<val>\\S*)");lines.stream().forEach(x -> {Matcher m = p.matcher(x);if(m.matches()) {// System.out.println(m.group("key"));// System.out.println(m.group("val"));df.append(Arrays.asList(m.group("key"), Double.valueOf(m.group("val"))));}});// 窗体展示df.groupBy("key").sum().sortBy("-value").show();// 打印 1000 行,默认 10 行System.out.println(df.groupBy("key").sum().sortBy("-value").toString(1000));}
}

代码(Python、Java)实现分组求和相关推荐

  1. 动态规划-b站up主正月点灯笼DP教程代码python+java版

    动态规划-b站up主正月点灯笼DP教程代码python+java版 https://www.bilibili.com/video/BV12W411v7rd up:正月点灯笼 test01 选出数组中不 ...

  2. java stream 分组求和_Java stream List 求和、分组操作

    Java stream List 求和.分组操作 前言 项目中经常会使用Stream操作一些集合数据,今天记录一下我经常使用的Stream操作 求和操作public static void main( ...

  3. Python | Excel数据分组求和

    在做数学建模比赛中遇到的一个小问题. 已知一个大量离散的数据的excel表,为了简化计算,我们需要将同列项相加. 如下图所示(注意,这里的数据量多达2万行,肯定不能手工计算) 因此,我们利用pytho ...

  4. Java Lambda分组求和

    一.直接上代码: PositionDistribution p1=new PositionDistribution();p1.setStockType("1");p1.setPos ...

  5. python,java,go,perl,php,c等驱动连接数据库

    文章目录 python,java,go,perl,php,c等驱动连接数据库 1.测试环境 2.python 2.1安装 2.2完整代码 3.java 3.1 安装 3.2代码 4.go 4.1 安装 ...

  6. python分组符合条件相加_python实现分组求和与分组累加求和代码

    我就废话不多说了,大家还是直接看代码吧! # -*- encoding=utf-8 -*- import pandas as pd data=['abc','abc','abc','asc','ase ...

  7. 梯度下降原理及线性回归代码实现(python/java/c++)

    "梯度下降"顾名思义通过一步一步迭代逼近理想结果,当达到一定的精度或者超过迭代次数才退出,所以所获得的结果是一个近似值.在其他博客上面基本都有一个通俗的比喻:从山顶一步步下山.下面 ...

  8. java steam 排序_java8 stream自定义分组求和并排序的实现

    本文主要介绍了java8 stream自定义分组求和并排序的实现,分享给大家,具体如下: public static void main(String[] args) { List list = ne ...

  9. 编程笔试(解析及代码实现):国内各大银行(招商银行/浦发银行等)在线笔试常见题目(猴子吃桃/字符串逆序输出/一段话输出字的个数/单词大小转换等)及其代码实现(Java/Python/C#等)之详细攻略

    编程笔试(解析及代码实现):国内各大银行(招商银行/浦发银行等)在线笔试常见题目(猴子吃桃/字符串逆序输出/一段话输出字的个数/单词大小转换等)及其代码实现(Java/Python/C#等)之详细攻略 ...

  10. java stream实现分组BigDecimal求和,自定义分组求和

    前言 随着微服务的发展,越来越多的sql处理被放到java来处理,数据库经常会使用到对集合中的数据进行分组求和,分组运算等等. 那怎么样使用java的stream优雅的进行分组求和或运算呢? 一.准备 ...

最新文章

  1. HDU 6354 Everything Has Changed(余弦定理)多校题解
  2. docker容器间数据共享
  3. bzoj3715 [PA2014]Lustra
  4. 《JavaScript设计模式与开发实践》模式篇(3)—— 代理模式
  5. Dijkstra-解决最短路径问题
  6. 我是如何用CSS绘制各种形状的
  7. [bzoj1969] [Ahoi2005]LANE 航线规划
  8. Vue3+Vite快速搭建vue项目
  9. 由dorp database 数字引发的思考
  10. 百度Q3财报公布,O2O转型志在必得
  11. 常见面试题及解答|计算机网络
  12. 使用MATLAB调用ANSYS过程中,使用如下命令 !D:\Program Files\ANSYS Inc\v150\ansys\bin\winx64\ANSYS150 -b -p ane3f
  13. OC不可变字符串和可变字符串(1)
  14. 基于51单片机的数字时钟(万年历)
  15. 《斯坦福极简经济学》读书笔记
  16. 2017年度专业技术人员资格考试时间安排
  17. 思科收购OpenDNS以提升Security Everywhere2015
  18. 重大喜讯!精灵云校V5.0家校互通正式上线,助力机构打造完美服务体系!
  19. C#上位机与西门子S7-200 Smart 网口通讯
  20. 游戏盾防御CC攻击的工作原理

热门文章

  1. 戴尔显示rpc服务器,swmm(暴雨管理模型)安装完成后运行显示 RPC服务器不可用
  2. 软件一定存在修改的余地——《大话Java性能优化》
  3. 【开源】MagicData-RAMC :180小时中文对话式语音数据集正式发布
  4. Excel直接将选区转为图片,并另存为文件的操作
  5. 我的大学之路---《大学之路》读后感
  6. C++实现设计模式——Builder模式
  7. Python Scrapy 创建第一个爬虫项目
  8. 立创商城的元件原理图怎么弄到ad_(50条消息)立创EDA元件封装导入AD软件教程
  9. 在excel中数字比对_Excel数据比对,多种方法总有一个适合你
  10. camera - YUV422