Excel csvファイルについて
解決したいこと
Excelをcsvで保存し、それをvscodeで散布図を表示するといったことをしているのですが、csvだとデータが一部失われる可能性があるらしく、実際、作成した散布図は一部データが表示されませんでした。
これはどうすれば改善できますか?
Excelをcsvで保存し、それをvscodeで散布図を表示するといったことをしているのですが、csvだとデータが一部失われる可能性があるらしく、実際、作成した散布図は一部データが表示されませんでした。
これはどうすれば改善できますか?
回答でなく申し訳ありません
一連の作業だけを質問されても改善は難しいと思います。
もう少し具体的な質問にした方がよろしいかと・・・・
csvだとデータが一部失われる可能性があるらしく、実際、作成した散布図は一部データが表示されませんでした。
では、CSVデータに欠損があったか、噂を話しているのかわかりません。
作成した散布図の一部データが表示されなかった事を根拠にしているように読み取れますが、”vscode側は正しい”と言う前提があっての話です。
まず、CSVデータに欠損があったかどうか、確認しましょう。
テキストエディタでCSVデータを確認すれば、正しいCSVか判断できますし、OKの場合とNGの場合のデータ確認ができますよね。
Excelのデータを工夫して、欠損しなくするしかないですね。
わからなければ、どのようなデータで発生したのか、データを添付してから質問するのはどうでしょうか?
vscode側に問題があると判断します。
散布図のプログラム又は操作を確認しましょう。
わからなければ、プログラムを添付するなり操作を説明して質問するのはどうでしょうか?
@nabenabebe
Questioner
アドバイスを含めて親切に返答していただき、ありがとうございます。
原因はcsvとは関係なく、単に使っていたデータの一部の値が小さすぎて散布図やグラフにしたとき視覚的に見えないからデータが欠損しているように感じただけでした。
csvだとデータが一部失われる可能性があるらしく
仕様なのでは?そもそもvscodeでは個人の表現であり散布図の描画は仕様にしたがって諦める以外ないと思います。
コードの記載がなく、プラグインを開発する記述がないので個人利用として書き込んでます。
@nabenabebe
Questioner
ご返答ありがとうございます、原因は別にありました。
ExcelでCSVが欠損するという話は初めて聞きました。では、Excelではなくテキストエディタを使用して、CSVファイルを作成したらいいのでは?
CSVを取得あるいは生成する手段を変更できませんか?
@nabenabebe
Questioner
ご返答ありがとうございます
解決したのでしたら、質問をクローズしましょう。
csvだとデータが一部失われる可能性があるらしく
私も初耳です。
CSVが悪いのではなく、CSVファイルを読み込むアプリ(ライブラリ)の問題では?
@nabenabebe
Questioner
ご返答ありがとうございます
Excel で CSV での保存時に「データが一部失われる可能性がある」のは、あくまで Excel 上での書式設定 = 文字の装飾等を指しており、プレーンな文字列自体には影響を与えないはずです。
@nabenabebe
Questioner
ご返答ありがとうございます
CSVファイルとして保存する際に、データが欠落していないかどうかをまず確認する必要があります。 データの欠落がある場合は、欠落しているデータに対処することができます。
変換には他のツールを使ってみてもよい。 Excelシートから直接データを読み込んで散布図を作成することも可能です。
私はFree Spire.XLS for .NETを使ってCSVへの変換を試しましたが、無料版を使用したため、いくつかの制限はありますが、ほとんどのニーズを満たすことができます。
このツールを使ってExcelシートをCSVファイルに変換したり、Excelシートから直接データを読み込んだりしてみてください。
ExcelワークシートをCSVに変換する:
using Spire.Xls;
using System.Text;
namespace ConvertAWorksheetToCsv
{
class Program
{
static void Main(string[] args)
{
//Workbookクラスのインスタンスを作成する
Workbook workbook = new Workbook();
//Excelファイルをロードする
workbook.LoadFromFile("Sample.xlsx");
//最初のワークシートを取得する
Worksheet sheet = workbook.Worksheets[0];
//ワークシートをCSVとして保存する
sheet.SaveToFile("ExcelToCSV.csv", ",", Encoding.UTF8);
}
}
}
データの読み取り例(あるシートからデータを読み取り、別のシートに書き込む):
using System.Linq;
using Spire.Xls;
namespace Retrieve_and_extract_data
{
class Program
{
static void Main(string[] args)
{
Workbook newBook = new Workbook();
Worksheet newSheet = newBook.Worksheets[0];
Workbook workbook = new Workbook();
workbook.LoadFromFile("Information.xlsx");
Worksheet sheet = workbook.Worksheets[0];
int i = 1;
int columnCount = sheet.Columns.Count();
foreach (CellRange range in sheet.Columns[0])
{
if (range.Text == "teacher")
{
CellRange sourceRange = sheet.Range[range.Row, 1, range.Row, columnCount];
CellRange destRange = newSheet.Range[i, 1, i, columnCount];
sheet.Copy(sourceRange, destRange, true);
i++;
}
}
newBook.SaveToFile("NewForm.xlsx", ExcelVersion.Version2010);
}
}
}
お役に立てれば幸いだ。
@nabenabebe
Questioner
親切に回答していただき、ありがとうございます。原因は別にありました。