ToolConvoyToolConvoyv2.6
DATA

CSV Transpose — CSV データの行と列を入れ替える

CSV データを transpose — 行と列を入れ替え。ライブプレビュー、ブラウザだけで完結。アップロード不要、アカウント不要、制限なし。

● ローカル動作 · ゼロコピーパイプラインページ読み込み以降のツールによる通信:0件

CSV Transposer

Transpose CSV data — swap rows with columns. The first row becomes the first column and vice versa. Works entirely in your browser.

CSV transpose は、一行で片付きそうに聞こえて、行列の仕組みを理解すれば実際にそうなっている操作のひとつです。最初の行が最初の列に、2 行目が 2 列目に、(row, column) のセルが (column, row) に移動します。アルゴリズム全体はそれだけです。本質的には 5 行の Python スニペットで終わることをわざわざツールにしている理由は、エッジケース(行長の不一致、header の扱い、delimiter の保持)を正しく扱うのが地味に面倒で、しかもミスの結果 — header がずれた transpose 後の CSV — はコードレビューで見つけにくいからです。

transpose で意外と見落としやすいのは header の問題です。CSV はラベル用のオプションの最初の行を持つフラットなグリッドです。transpose すると最初の行が最初の列になり、元は header 行だったものがラベルの列になります。多くのデータ — 月別売上、学生別成績、都市別気温 — では最初の行は意味のある header であり、transpose 後の形がまさに欲しいものです。一方で別のデータ — センサーごとの列を持つ時系列測定値など — では、最初の行がそもそも header ではないため、transpose 後の形は別の構造が必要になります。本ツールのデフォルトは標準的な慣習に従い、トグルはそのような一般的でないケースに対応します。

最後に使い分けの指針を。縦方向のカテゴリーを期待するチャートに渡すのが目的なら、transpose が正しい一手です。スキーマが行指向のデータを要求するデータベースへのインポートが目的なら、transpose してから取り込みます。印刷ページに収まる幅のテーブルにしたい場合は、transpose は逆方向 — より多くの列ではなく、より少ない列が欲しくなります。本ツールが得意なのは CSV で行と列を入れ替えるこの特定ケースです。その他のテーブル操作(pivot、unpivot、melt、stack)には、それらの操作を理解しているツール(スプレッドシート、pandas、または miller)を使ってください。

広告

使い方

  1. CSV データを貼り付ける

    CSV を入力エリアにドロップするか、.csv ファイルを読み込みます。ツールが自動的に delimiter を検出し(カンマ、セミコロン、タブ)、デフォルトでは最初の行を header として扱います。プレビューには元のグリッドと transpose 後のグリッドが並んで表示されます。

  2. header の扱いを調整する

    最初の行を transpose 後の出力の列 header にするかどうかを切り替えられます。列に名前が付いたデータ(月別売上、学生別成績)の場合はデフォルトのままで問題ありません。行に名前が付いたデータの場合はオフにしてください。

  3. 結果をコピーまたはダウンロード

    transpose 後の CSV をクリップボードにコピーするか、.csv ファイルとしてダウンロードします。出力は入力と同じ delimiter を使用します — カンマはカンマのまま、セミコロンはセミコロンのままです。

よくある質問

どのような場合に CSV データを transpose する必要がありますか?

よくある 3 つのケースがあります。1 つは、スプレッドシートがカテゴリーを列として構成しており(1 月、2 月、3 月)、チャートやデータベースへのインポートのために行として使いたい場合。もう 1 つは、横に広い export データがプリンターやビューアーに収まらないため、90 度回転させたい場合。さらにもう 1 つは、データパイプラインがソースデータと逆の向きを期待している場合です。

header 行はどう扱われますか?

デフォルトでは、入力の最初の行が出力の最初の列になります。(0, 0) のセル — つまり元の header の最初のセル — が新しい列 header になります。これは標準的な matrix transpose と一致しており、通常は transpose 後のデータで望んでいる結果です。

セルの値は再フォーマットされますか?

されません — transpose はデータそのものではなく構造の変更です。元のデータのすべての値は、transpose 後の位置に 1 回ずつ出現します。ツールは数値、日付、真偽値を再解析せず、すべての値をそのままコピーします。

行の長さがバラバラな場合はどうなりますか?

ツールは transpose 前に短い行を空のセルで最長行の幅まで埋めます。transpose 後の出力は、元の行数と等しい一貫した行長を持ちます。ソース内の空セルも、対応する位置で出力に空セルとしてそのまま引き継がれます。

非常に大きな CSV でも transpose できますか?

はい、ただしメモリ上の表現サイズは「入力行数 × 入力列数」になります。10,000 行 × 100 列の CSV は 100 万セルで、ブラウザでは問題なく扱えます。100,000 行 × 1,000 列の CSV になると、タブのメモリを使い切る可能性があります。

制限事項

  • インメモリのスケーリングtranspose の前に入力全体を一括してメモリに読み込みます。極めて大きな入力(数百万セル規模)ではブラウザタブのメモリを使い切る可能性があります。パイプライン規模の transpose には、`miller` のような CLI ツール、または `csvkit` の `csvjson` に JSON→CSV ツールを連結した方法を使用してください。
  • 数式は非対応数式を含む CSV セル(=SUM(A1:A10)、=AVERAGE(B:B))はリテラルテキストとして transpose されます。数式内のセル参照は新しい位置に合わせて調整されないため、transpose 後の出力では誤ったセルを指してしまうことになります。
  • 集計は行わないtranspose は値の集計・合計・平均を行いません。同じ列内に同じ値を持つセルが 2 つある場合、transpose 後の出力にも両方がそのまま現れます。集計が必要な場合は、まず transpose を行い、その後にピボットツールやスプレッドシートで処理してください。

プラットフォーム別の注意点

macOS
Numbers と Excel のどちらも、行列をその場で入れ替える「Paste Special > Transpose」を備えています。ブラウザ版のツールは、そのためにスプレッドシートを開くほどでもない単発の transpose や、チャットやメールから貼り付けたコンテンツに適しています。
Windows
Excel の「Paste Special > Transpose」を使えば、スプレッドシート内でも同じことができます。ブラウザ版のツールは CSV テキストをそのまま扱うのに適しています — Excel に貼り付けて transpose して CSV として保存するのは、本ツールを直接使うよりも手間がかかります。
Linux
最も近い CLI の代替は `miller`(mlr)です:`mlr --csv reshape -r '' -o wide input.csv`、あるいは `pandas` ライブラリを使った短い Python スクリプトです。ブラウザ版のツールは、ターミナル以外の場所からコピーしたコンテンツに適しています。
Web
完全にクライアントサイドで動作します。ページの読み込み後はオフラインでも利用可能。transpose 後の出力は入力と同じ delimiter を使った標準的な CSV なので、変換なしでどんなスプレッドシートやデータパイプラインにも貼り付けられます。
広告
広告