nabenabebe
@nabenabebe

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

Excel csvファイルについて

Q&A

Closed

解決したいこと

Excelをcsvで保存し、それをvscodeで散布図を表示するといったことをしているのですが、csvだとデータが一部失われる可能性があるらしく、実際、作成した散布図は一部データが表示されませんでした。
これはどうすれば改善できますか?

0

6Answer

回答でなく申し訳ありません

一連の作業だけを質問されても改善は難しいと思います。
もう少し具体的な質問にした方がよろしいかと・・・・

CSVデータに欠損があるか確認しましょう。

csvだとデータが一部失われる可能性があるらしく、実際、作成した散布図は一部データが表示されませんでした。

では、CSVデータに欠損があったか、噂を話しているのかわかりません。
作成した散布図の一部データが表示されなかった事を根拠にしているように読み取れますが、”vscode側は正しい”と言う前提があっての話です。

まず、CSVデータに欠損があったかどうか、確認しましょう。
テキストエディタでCSVデータを確認すれば、正しいCSVか判断できますし、OKの場合とNGの場合のデータ確認ができますよね。

CSVデータ欠損の場合

Excelのデータを工夫して、欠損しなくするしかないですね。
わからなければ、どのようなデータで発生したのか、データを添付してから質問するのはどうでしょうか?

CSVデータ欠損がない場合

vscode側に問題があると判断します。
散布図のプログラム又は操作を確認しましょう。
わからなければ、プログラムを添付するなり操作を説明して質問するのはどうでしょうか?

2Like

Comments

  1. @nabenabebe

    Questioner

    アドバイスを含めて親切に返答していただき、ありがとうございます。
    原因はcsvとは関係なく、単に使っていたデータの一部の値が小さすぎて散布図やグラフにしたとき視覚的に見えないからデータが欠損しているように感じただけでした。

csvだとデータが一部失われる可能性があるらしく

仕様なのでは?そもそもvscodeでは個人の表現であり散布図の描画は仕様にしたがって諦める以外ないと思います。

コードの記載がなく、プラグインを開発する記述がないので個人利用として書き込んでます。

0Like

Comments

  1. @nabenabebe

    Questioner

    ご返答ありがとうございます、原因は別にありました。

ExcelでCSVが欠損するという話は初めて聞きました。では、Excelではなくテキストエディタを使用して、CSVファイルを作成したらいいのでは?
CSVを取得あるいは生成する手段を変更できませんか?

0Like

Comments

  1. @nabenabebe

    Questioner

    ご返答ありがとうございます

  2. 解決したのでしたら、質問をクローズしましょう。

csvだとデータが一部失われる可能性があるらしく

私も初耳です。
CSVが悪いのではなく、CSVファイルを読み込むアプリ(ライブラリ)の問題では?

0Like

Comments

  1. @nabenabebe

    Questioner

    ご返答ありがとうございます

Excel で CSV での保存時に「データが一部失われる可能性がある」のは、あくまで Excel 上での書式設定 = 文字の装飾等を指しており、プレーンな文字列自体には影響を与えないはずです。

0Like

Comments

  1. @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);

        }
    }
}

お役に立てれば幸いだ。

0Like

Comments

  1. @nabenabebe

    Questioner

    親切に回答していただき、ありがとうございます。原因は別にありました。

Your answer might help someone💌