- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
介绍
我正在一个自动化项目中工作,目的是学习Java和数据科学的新技巧(非常简单的水平),所有内容都是自学的。
问题
这是我如何存储此数据的示例.csv文件。
Date when obtained
Format for identifying the numbers below
data
.
.
.
.
data
2018/12/29
name,quantity,quality,realmQ,cost
Tejido,321 908,13.55,43.18,$15.98,
Ropa,195 045,20.55,45.93,$123.01,
Gorra de visera,126 561,17.43,42.32,$79.54,
Cerveza,80 109,3.37,17.93,$12.38,
Mercancías de playa,75 065,11.48,39.73,$105.93,
Bebidas alcohólicas,31 215,4.84,27.90,$32.29,
Artículos de cuero,19 098,23.13,44.09,$198.74,
Bolsas y carteras,7 754,23.09,41.34,$1 176.54,
2018/12/30
name,quantity,quality,realmQ,cost
Tejido,252 229,12.86,43.14,$18.87,
Ropa,132 392,18.09,46.02,$177.58,
Gorra de visera,87 676,14.42,42.46,$122.48,
Cerveza,44 593,2.72,17.79,$18.71,
Mercancías de playa,44 593,8.26,39.56,$200.78,
Bebidas alcohólicas,27 306,4.30,23.88,$31.95,
Artículos de cuero,16 147,21.08,43.91,$207.49,
Bolsas y carteras,6 552,21.11,40.59,$1 195.41,
2019/01/02
name,quantity,quality,realmQ,cost
Tejido,321 908,13.55,43.18,$15.98,
Ropa,195 045,20.55,45.93,$123.01,
Gorra de visera,126 561,17.43,42.32,$79.54,
Cerveza,80 109,3.37,17.93,$12.38,
Mercancías de playa,75 065,11.48,39.73,$105.93,
Bebidas alcohólicas,31 215,4.84,27.90,$32.29,
Artículos de cuero,19 098,23.13,44.09,$198.74,
Bolsas y carteras,7 754,23.09,41.34,$1 176.54,
2019/01/03
name,quantity,quality,realmQ,cost
Tejido,321 908,13.55,43.18,$15.98,
Ropa,195 045,20.55,45.93,$123.01,
Gorra de visera,126 561,17.43,42.32,$79.54,
Cerveza,80 109,3.37,17.93,$12.38,
Mercancías de playa,75 065,11.48,39.73,$105.93,
Bebidas alcohólicas,31 215,4.84,27.90,$32.29,
Artículos de cuero,19 098,23.13,44.09,$198.74,
Bolsas y carteras,7 754,23.09,41.34,$1 176.54,
public class CSVinput {
static String[] nombre = new String[8];
static int[] cantidad = new int[8];
static double[] calidad = new double[8];
static double[] realmQ = new double[8];
static double[] coste = new double[8];
public static void ImportData(String path) throws FileNotFoundException
{
/*Can only load one csv with 8 stuff in it*/
System.out.println("Presenting data...");
try (Scanner scan = new Scanner(new File(path))) {
scan.useDelimiter(",");
String date = scan.nextLine();
System.out.println("fecha: " + date);
scan.nextLine();
int index = 0;
while(scan.hasNext() == true)
try{
{
String name = scan.next().replaceAll("\n", "");
nombre[index] = name;
System.out.println("nombre: " + name);
int quantity = Integer.parseInt(scan.next().replaceAll(" ", ""));
cantidad[index] = quantity;
System.out.println("cantidad: " + quantity);
double quality = Double.parseDouble(scan.next());
calidad[index] = quality;
System.out.println("calidad: " + quality);
double realmq = Double.parseDouble(scan.next());
realmQ[index] = realmq;
System.out.println("realmQ: " + realmq);
double cost = Double.parseDouble(scan.next().replace("$", "").replace(" ", ""));
coste[index] = cost;
System.out.println("coste: $" + cost);
index++;
}
} catch(ArrayIndexOutOfBoundsException e){}
}
}
public static void main(String[] args) throws FileNotFoundException
{
ImportData("caca.csv");
}
}
2018/12/29
name,quantity,quality,realmQ,cost
Tejido,321 908,13.55,43.18,$15.98,
Ropa,195 045,20.55,45.93,$123.01,
Gorra de visera,126 561,17.43,42.32,$79.54,
Cerveza,80 109,3.37,17.93,$12.38,
Mercancías de playa,75 065,11.48,39.73,$105.93,
Bebidas alcohólicas,31 215,4.84,27.90,$32.29,
Artículos de cuero,19 098,23.13,44.09,$198.74,
Bolsas y carteras,7 754,23.09,41.34,$1 176.54,
最佳答案
CSV➙平板
发明了CSV format来表示单个简单的数据平面表。 Tab-delimited文件的同上。
您具有一个日期层次结构,该层次结构映射到名称-数量-质量-领域m-成本-元组的集合。那不是简单的平面表格数据。
整理数据
如果要将其存储在CSV中,则必须通过为日期添加一列并在tuples的集合中重复日期值来展平,以使其成为日期名称-数量-质量-领域-成本-元组。
date,name,quantity,quality,realmQ,cost
2018-12-29,Tejido,321 908,13.55,43.18,$15.98
2018-12-29,Ropa,195 045,20.55,45.93,$123.01
2018-12-29,Gorra de visera,126 561,17.43,42.32,$79.54
2018-12-29,Cerveza,80 109,3.37,17.93,$12.38
2018-12-29,Mercancías de playa,75 065,11.48,39.73,$105.93
2018-12-29,Bebidas alcohólicas,31 215,4.84,27.90,$32.29
2018-12-29,Artículos de cuero,19 098,23.13,44.09,$198.74
2018-12-29,Bolsas y carteras,7 754,23.09,41.34,$1 176.54
data.csv
文件。数据已清理:
$
字符
date,name,quantity,quality,realmQ,cost
2018-12-29,Fabric,321908,13.55,43.18,15.98
2018-12-29,Clothing,195045,20.55,45.93,123.01
2018-12-29,Visor Cap,126561,17.43,42.32,79.54
2018-12-29,Beer,80109,3.37,17.93,12.38
2018-12-29,Beach goods,75065,11.48,39.73,105.93
2018-12-29,Alcoholic beverages,31215,4.84,27.90,32.29
2018-12-29,Leather goods,19098,23.13,44.09,198.74
2018-12-29,Bags and wallets,7754,23.09,41.34,1176.54
2018-12-30,Fabric,252229,12.86,43.14,18.87
2018-12-30,Clothing,132392,18.09,46.02,177.58
2018-12-30,Visor Cap,87676,14.42,42.46,122.48
2018-12-30,Beer,44593,2.72,17.79,18.71
2018-12-30,Beach goods,44593,8.26,39.56,200.78
2018-12-30,Alcoholic beverages,27306,4.30,23.88,31.95
2018-12-30,Leather goods,16147,21.08,43.91,207.49
2018-12-30,Bags and wallets,6552,21.11,40.59,1195.41
2019-01-02,Fabric,321908,13.55,43.18,15.98
2019-01-02,Clothing,195045,20.55,45.93,123.01
2019-01-02,Visor Cap,126561,17.43,42.32,79.54
2019-01-02,Beer,80109,3.37,17.93,12.38
2019-01-02,Beach goods,75065,11.48,39.73,105.93
2019-01-02,Alcoholic beverages,31215,4.84,27.90,32.29
2019-01-02,Leather goods,19098,23.13,44.09,198.74
2019-01-02,Bags and wallets,7754,23.09,41.34,1176.54
2019-01-03,Fabric,321908,13.55,43.18,15.98
2019-01-03,Clothing,195045,20.55,45.93,123.01
2019-01-03,Visor Cap,126561,17.43,42.32,79.54
2019-01-03,Beer,80109,3.37,17.93,12.38
2019-01-03,Beach goods,75065,11.48,39.73,105.93
2019-01-03,Alcoholic beverages,31215,4.84,27.90,32.29
2019-01-03,Leather goods,19098,23.13,44.09,198.74
2019-01-03,Bags and wallets,7754,23.09,41.34,1176.54
package com.basilbourque.example;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.Objects;
public class DailyProduct {
// date,name,quantity,quality,realmQ,cost
// 2018-12-29,Fabric,321908,13.55,43.18,15.98
// 2018-12-29,Clothing,195045,20.55,45.93,123.01
// 2018-12-29,Visor Cap,126561,17.43,42.32,79.54
// 2018-12-29,Beer,80109,3.37,17.93,12.38
// 2018-12-29,Beach goods,75065,11.48,39.73,105.93
// 2018-12-29,Alcoholic beverages,31215,4.84,27.90,32.29
// 2018-12-29,Leather goods,19098,23.13,44.09,198.74
// 2018-12-29,Bags and wallets,7754,23.09,41.34,1176.54
public enum Header {
DATE, NAME, QUANTITY, QUALITY, REALMQ, COST;
}
// ----------| Member vars |-----------------------------------
public LocalDate localDate;
public String name;
public Integer quantity;
public BigDecimal quality, realmQ, cost;
// ----------| Constructor |-----------------------------------
public DailyProduct ( LocalDate localDate , String name , Integer quantity , BigDecimal quality , BigDecimal realmq , BigDecimal cost ) {
this.localDate = Objects.requireNonNull( localDate );
this.name = Objects.requireNonNull( name );
this.quantity = Objects.requireNonNull( quantity );
this.quality = Objects.requireNonNull( quality );
this.realmQ = Objects.requireNonNull( realmq );
this.cost = Objects.requireNonNull( cost );
}
// ----------| `Object` overrides |-----------------------------------
@Override
public String toString ( ) {
return "com.basilbourque.example.DailyProduct{ " +
"localDate=" + localDate +
" | name='" + name + '\'' +
" | quantity=" + quantity +
" | quality=" + quality +
" | realmq=" + realmQ +
" | cost=" + cost +
" }";
}
@Override
public boolean equals ( Object o ) {
if ( this == o ) return true;
if ( o == null || getClass() != o.getClass() ) return false;
DailyProduct that = ( DailyProduct ) o;
return localDate.equals( that.localDate ) &&
name.equals( that.name );
}
@Override
public int hashCode ( ) {
return Objects.hash( localDate , name );
}
}
DailyProduct
对象数据的文件。
package com.basilbourque.example;
import org.apache.commons.csv.CSVFormat;
import org.apache.commons.csv.CSVPrinter;
import org.apache.commons.csv.CSVRecord;
import java.io.BufferedReader;
import java.io.IOException;
import java.math.BigDecimal;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.time.Instant;
import java.time.LocalDate;
import java.time.temporal.ChronoUnit;
import java.util.ArrayList;
import java.util.List;
public class DailyProductFileHandler {
public List < DailyProduct > read ( Path path ) {
// TODO: Add a check for valid file existing.
List < DailyProduct > list = List.of(); // Default to empty list.
try {
// Prepare list.
int initialCapacity = ( int ) Files.lines( path ).count();
list = new ArrayList <>( initialCapacity );
// Read CSV file. For each row, instantiate and collect `DailyProduct`.
BufferedReader reader = Files.newBufferedReader( path );
Iterable < CSVRecord > records = CSVFormat.RFC4180.withFirstRecordAsHeader().parse( reader );
for ( CSVRecord record : records ) {
// date,name,quantity,quality,realmQ,cost
LocalDate localDate = LocalDate.parse( record.get( "date" ) );
String name = record.get( "name" );
Integer quantity = Integer.valueOf( record.get( "quantity" ) );
BigDecimal quality = new BigDecimal( record.get( "quality" ) );
BigDecimal realmQ = new BigDecimal( record.get( "realmQ" ) ); // Note: case-sensitive.
BigDecimal cost = new BigDecimal( record.get( "cost" ) );
// Instantiate `DailyProduct` object, and collect it.
DailyProduct dailyProduct = new DailyProduct( localDate , name , quantity , quality , realmQ , cost );
list.add( dailyProduct );
}
} catch ( IOException e ) {
e.printStackTrace();
}
return list;
}
public void write ( final List < DailyProduct > dailyProducts , final Path path ) {
try ( final CSVPrinter printer = CSVFormat.RFC4180.withHeader( "date" , "name" , "quantity" , "quality" , "realmQ" , "cost" ).print( path , StandardCharsets.UTF_8 ) ; ) {
for ( DailyProduct dp : dailyProducts ) {
printer.printRecord( dp.localDate , dp.name , dp.quantity , dp.quality , dp.realmQ , dp.cost );
}
} catch ( IOException e ) {
e.printStackTrace();
}
}
public static void main ( final String[] args ) {
DailyProductFileHandler fileHandler = new DailyProductFileHandler();
Path pathInput = Paths.get( "/Users/basilbourque/data.csv" );
List < DailyProduct > list = fileHandler.read( pathInput );
System.out.println( list );
String when = Instant.now().truncatedTo( ChronoUnit.SECONDS ).toString().replace( ":" , "•" );
Path pathOutput = Paths.get( "/Users/basilbourque/data_" + when + ".csv" );
fileHandler.write( list , pathOutput );
System.out.println( "Writing file: " + pathOutput );
}
}
Map
(某些人称为
also called a dictionary)来表示日期到元组的层次结构。此数据结构是键值对的集合,其中日期是您的键,元组的
Set
或
List
是您的值。
Product
。添加成员变量:
name
,
quantity
,
quality
,
realmq
和
cost
。为每个元组实例化一个对象。
Map
,例如
TreeMap
。作为
SortedMap
,它可以使您的日期按时间顺序排列。
SortedMap< Product > map = new TreeMap<>() ;
LocalDate
作为日期值,即地图中的键。
LocalDate ld = LocalDate.of( 2018 , 1 , 23 ) ;
map.put( ld , new ArrayList< Product >() ) ; // Pass an initial capacity in those parens if you know a likely size of the list.
Product
对象,从地图上检索相关日期的列表,然后将产品添加到列表中。
Product
对象。写下每个产品的成员变量。使用任何字段和
delimiters行。尽管由于我从未理解的原因而很少使用,但ASCII(Unicode的子集)具有
specific delimiter characters。我建议您使用
these separators。
code points:
$
列中的
cost
只是噪音。如果要表示一种特定的货币,那么简单的
$
可能无法完成工作,因为它可能是加元,美元,墨西哥比索或其他货币。因此,请使用
standard currency symbol,例如
CAD
&
USD
&
MXN
。如果所有值都使用一种已知的币种(例如CAD),请完全省略“ $”。
关于java - 动态读取CSV文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54027839/
在 JavaScript 中,我们可以动态创建 元素并附加到 部分,以便为大量元素应用 CSS 规则。 这种方法的优点或缺点是什么? 如果它确实提供了与元素上的 javascript 迭代相比的性
我有这个代码 import "./HTTPMethod.dart"; import '../../DataModel/DataModel.dart'; mixin RouterMixin { HT
哪些 OLAP 工具支持动态、动态地创建维度或层次结构? 例如,层次结构将成员定义为:“前 5 名”、“前 6-10 名”、“其他”... 计算成员是通常的答案,我正在寻找不同的东西。计算器的问题。成
我正在 CakePHP 中创建一个“表单编辑器”。 该界面允许用户选择要应用于字段的验证,例如数字、电子邮件等 因此,我需要根据用户输入为模型动态创建验证。为此,我可以使用验证对象:https://b
这是一个场景: 我有一个Web服务,我们将其称为部署在tomcat(轴)上的StockQuoteService。通过此 Web 服务公开了 getStockQuote() 方法。 现在,我想构建一个
我正在尝试从服务器获取 JSON 响应并将其输出到控制台。 Future login() async { var response = await http.get( Uri.
我从另一个问题中得到了这段代码(感谢 chunhunghan)。我需要创建一个登录屏幕,并尝试根据服务器发回给我的响应来验证用户凭据,但是每次我尝试运行代码时,它都会给我“未处理的异常:Interna
当我在“Dart”主程序中运行它时,一切正常,并且我得到了一个与会者列表。但是,当我在我的 Flutter 应用程序中调用它时,出现错误: flutter:“List”类型不是“List>”类型的子类
本文实例为大家分享了js实现验证码动态干扰的具体代码,供大家参考,具体内容如下 效果一 效果二 代码一 ?
目前我正在为我的网站使用 No-Ip,我想使用 cloudflare 来抵御 ddos 和机器人程序。我注意到您需要一个用于 cloudflare 的域。我还搜索了网络,发现了一个叫做 cloud
有没有办法在 Excel VBA 中构建动态 if 语句?基本上我正在尝试创建一个参数化计算,用户将能够输入不同的变量,即 变量 1 “变量 2” “变量 3” 在这种情况下 变量 1 是单元格引用
大家好, 请查看上面的图片,我有两张 table 。在下面代码的第一个表中,我得到了这种格式。 但我想像 Table2 那样格式化,每个合并单元格中的行数是动态的,而且不一样。 有没有办法像table
如何根据我添加的 View 修改标题部分的高度?heightForHeaderInSection在 viewForHeaderInSection 之前被调用我不知道 View 大小,直到我创建它。 最
是否存在在运行时生成 AST/解析树的解析器?有点像一个库,它会接受一串 EBNF 语法或类似的东西并吐出数据结构? 我知道 antlr、jlex 和他们的同类。他们生成可以做到这一点的源代码。 (喜
我在持有汽车制造商的表格上有一个 MultipleChoiceField。我想将我的汽车数据库过滤到已检查的品牌,但这会导致问题。如何动态获取所有 Q(make=...) 语句? 我如何开始:['va
$end = preg_replace($pattern, $replacement, $str); 如何使替换字符串 $replacement 随 $str 中的每次匹配而变化?例如,我想用关联的图
我正在编写一个 VBA 程序,用于过滤表中的值。我试图使其成为一个适用于您提供的所有表格的通用程序。在我的程序中,我必须设置它正在过滤的表的范围:Set rng = dataSheet.Range("
我正在循环一个元素数组,并且我想使用给定的模板递归地显示该元素 然后在该模板内使用带有切换功能的按钮来显示/隐藏给定元素的Child的更深级别模板(Child也是一个元素) 这是我的模板
从客户端(html)发送表单,服务器端通过选择选项之一决定运行哪个函数。 const decideWho = (form) => { const choice = form.choice; c
我有一个具有以下属性的按钮: circle_normal.xml(在 res/drawable 中) circle.xml(在 res/drawable 中)
我是一名优秀的程序员,十分优秀!