- 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/
我遇到以下问题。我想读取一个包含数百万行和数百列的大型 csv。我想向下转换列的数据类型。我的方法是读取 csv,然后使用 pd.to_numeric() 对其进行向下转换。我不知道列数及其类型。在读
目前,我从 SQL server (2008) 数据库获取数据。 cyurrent的方法是使用DataTable,然后将其传递并使用。 if (parameters != null)
我有以下问题。我有一个巨大的 csv 文件,想用多处理加载它。对于一个包含 500000 行和 130 列不同数据类型的示例文件,Pandas 需要 19 秒。我试过 dask 因为我想多处理阅读。但
是否有关于用于序列化各种 MFC 数据结构的二进制格式的明确文档?我已经能够在十六进制编辑器中查看我自己的一些类,并使用 Java 的 ByteBuffer 类读取它们(使用自动字节顺序转换等)。 但
我正在使用 Selenium 进行测试,我们用 HTML 文件编写测试用例,并用它们制作测试套件,我们的要求是编写足够健壮的测试用例,以根据测试环境改变自身。 为此,我不希望在 HTML 脚本本身中包
我需要一个 JavaScript 代码来读取存储为 .txt 文件的字典(或者也可以保存为任何其他类型的文件。它也可以在线获得)并将其内容存储在一个变量中。我不能找到一种让 JavaScript 像
我正在尝试遍历包含 SSH 登录和其他日志的日志文本文件。 程序正在返回 SSH 登录的总数。 我的解决方案确实有效,但似乎有点慢(在 200mo 文件上大约需要 3.5 秒)。我想知道是否有任何方法
我正在将大量数据从一个电子表格复制到工作簿中的其他 160 个电子表格。目前,Excel (2013) 遇到错误,因为它没有足够的资源来完成操作。 我的目标是将工作表 4 中 V13:XI1150 范
我正在尝试读取一个有 1147 行的文本文件。下面的代码仅读取第 1050-1147 行。我的目标是读取整个文件并提取位于不同行的特定值以在脚本中使用。一个示例是包含“BlockList: 2”的行中
我正在为游戏编写解释器。用户将其移动输入解释器,程序执行该移动。 现在我想为每个决定实现一个时间限制。玩家不应该能够思考超过 30 秒来写一个移动并按下回车。 call_with_time_limit
以this file例如,我正在尝试读取 data.frame 中的数据。来自 the doc (pdf 文件,表 1),它遵循一些 fortran 约定。我尝试了以下但收效甚微: dir 0' 将
我正在使用 R 阅读 Outlook 附件。我的引用在这里:Download attachment from an outlook email using R 这是我的电子邮件的截图: 这每天都会发送
我不会从表格中读取行来将主题放在列表中 php脚本 $url_obj='http://'.$host.':8069/xmlrpc/object'; $sock=new xmlrpc_client($u
我有一个这样的 csv 文件: id,name,value 1,peter,5 2,peter\,paul,3 我如何读取此文件并告诉 R "\," 不表示新列,仅表示 ","。 我必须添加该文件
我正在尝试读取 ~/Library/Preferences/com.apple.mail.plist (在 Snow Leopard 上)以获取电子邮件地址和其他信息以进入“关于”对话框。我使用以下代
This question already has answers here: How do I use floating-point division in bash? (19个回答) 5个月前关闭
本练习的目标是读取输入文件并将其存储到表中,然后验证输入中的某些字段并输出任何错误记录。我需要读取并存储每个策略组,以便表中一次仅存储 5 条记录,而不是整个文件。 所以我需要读取一个包含 5 条记录
据我了解,LWT 插入始终以 SERIAL 一致性级别完成。如果为 true,这是否意味着读取作为 LWT 插入的行可以安全地以 ANY 的一致性级别读取? 换句话说,我假设 LWT 插入是完全一致的
我看到很多很多通过java脚本读取cookie的函数,但我只想在变量中使用它一次,我是JS新手。 这是我的代码 var TheNumber = (Math.random() + '') * 10000
我正在使用 asp.net 和 C#。我在服务器上部署了一个应用程序[已发布],现在我想查看该网站的代码,据我所知,我可以阅读程序集来查看代码。 请告诉我如何实现它。 提前致谢。 最佳答案 您可以使用
我是一名优秀的程序员,十分优秀!