エクセルでデータ分析をする方法とは?

このQ&Aのポイント
  • 艦これというゲームを通してエクセルを学ぼうと考えています。大型建造システムにおける出現確率やグラフをエクセルで求めたいです。
  • データ分析をするためには、元のデータから不要なデータを取り除く必要があります。手動で消すのは手間がかかるため、効率的な方法を教えてください。
  • 抽出したデータにおいて、A艦娘ごとのレシピ毎の出現率を求める方法を教えてください。
回答を見る
  • ベストアンサー

エクセルでデータ分析をしてみたい

艦これというゲームを通してエクセルを学ぼうと考えています。 艦これでは、投入する資材(燃料・弾薬・鋼材・ボーキサイト・開発資材)の量によって出現する艦娘の出現確率が変わる大型建造システムがあるのですが、その確率やグラフをエクセルで求めてみたいです。 サンプルはWIKIに多数あり、元のデータから区切り位置を指定し、抽出してエクセルで使用できる形に変換するところまで学びました。 人が手入力で報告したデータなので、元のデータには一部不要なものがあります。まず、こういったデータを取り除くにはどうすればいいでしょうか? 例えば、下記に一部例を上げましたが、資材はすべて数値を扱うので、そこに数値以外の文字が書いてあればそれを不要なデータと判断できますが、サンプル数が10000近くあるため手動で消すには骨が折れます。 【抽出したデータ】のようなデータが複数あるのですが、Aという艦娘(結果に該当)のレシピ(資材の組み合わせ 4000/2000/5000/5200 開発資材20など)毎の出現率を求めるにはどうすればよいでしょうか? よろしくお願いします。 _________________________________________ 【元のデータ】 -4000/2000/5000/5200 開発資材:20 空きドック:1 司令:79 秘書:瑞鳳改38 結果:龍驤 -- &new{2014-02-09 (日) 09:16:52}; -3500/3500/6000/6000 開発資材:20 空きドック:2 司令:104 秘書:加賀改99 結果:まるゆ -- &new{2014-02-09 (日) 09:19:51}; #NAME? &new{20140209 (日) 23:23:30};(誤りデータA) 【抽出したデータ】 燃料 弾薬 鋼材 ボーキサイト 開発資材 結果 4000 2000 5000   5200      20   龍驤 3500 3500 6000   6000      20   まるゆ #NAME? #NAME? &new{20140209 :30}(誤りデータAの抽出結果);

質問者が選んだベストアンサー

  • ベストアンサー
  • bunjii
  • ベストアンサー率43% (3589/8248)
回答No.1

>人が手入力で報告したデータなので、元のデータには一部不要なものがあります。まず、こういったデータを取り除くにはどうすればいいでしょうか? http://okwave.jp/qa/q8469708.html の続きですよね? 元データのサイトを探して内容を確認しました。 稀に空欄の行や誤記入の訂正等が有るようです。 手作業での削除やデータの補正は必要かも知れません。 提示のマイナス値はABS関数で補正すればプラス値に影響が及びません。 =Sheet2!A2 → =ABS(Sheet2!A2) のようにすると良いでしょう。 尚、元データをテキストファイルとしてメモ帳やワードパッドに取り込んで不要な行を削除してからExcelへ読み込んだ方が良いと思います。

purimanikki
質問者

補足

再度の書き込みありがとうございます。質問は前回の引き継ぎになります。 -4000などの謎の-は不要なので、元データに対して[-]をすべて[文字なし]に置換していましたが、ABS関数で絶対値を得られるんですね。 この回答を読む限りだと、不要なデータをコンピュータに判断させて削除させていくのは難しそうなのかな。 不要なデータがすべて削除できたとして、 【抽出したデータ】から、Aという艦娘のレシピ毎の出現率を求めるにはどうすればよいでしょうか? 4000/2000/5000/5200/20 燃料/弾薬/鋼材/ボーキサイト/開発資材の順 上記のレシピでの大鳳(結果)の出現率 X%など 普通に考えれば、上のレシピでの大鳳出現回数/上のレシピの総数で求めることができますが、 サンプル数が多いため、目で追って条件にあった行を発見していくのは大変です。

その他の回答 (4)

  • bunjii
  • ベストアンサー率43% (3589/8248)
回答No.5

>【質問1】 6条件を満たすレコードを計数するにはExcel 2007以降のバージョンの組込み関数であるCOUNTIFSを使うと数式がシンプルになります。 Excel 2013で検証しましたが、元のデータを手作業で修正しないと誤差が大きくなると思います。 原因は書き込む人によってフィールドのズレが生じるためプログラムで修正するには無理があるようです。 考え方としてはログ毎に1つのシートで元データと加工データを扱う方が分かり易いようです。 A列~F列を加工後の計数用データとし、G列を仕切り用に空けてH列以降(右側)を元データの貼り付け用にすると1枚のシートに収まります。 貼付画像は2枚のシートで処理したものです。 >【質問2】 過去ログのどれが最大かを見る意味が分かりません。 期間が同じスパンになっていれば何時頃が最大かを求める意味がありそうです。 目的の範囲を全て網羅してから考えてください。 1つのログについて処理が出来れば他のログについても準用すれば考えを纏められるでしょう。

  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.4

素材の組み合わせではなく、「400040002000500020というレシピ」で一つのデータで良いのですね。 手順: 該当のページから丸ごとコピー、必ず一度「メモ帳に貼り付け」ます メモ帳からコピーしてエクセルに貼り付けます 並べ替えによって大まかに修正、また今回はご希望により「開発資材:」を「/」に置換しておいてからスペースで切断 結果して資材(6000/5000/7000/2000/100)、空きドック、指令、秘書、結果、その他の列に再配置します 更にオートフィルタを使って異常データの行を抽出(例えば秘書に伊潜を使ってる行に多い)、適宜修正してざっと1500件のデータが抽出できます 回答したようにピボットテーブルレポートでデータ分析してみます。 たとえば ページフィールドに「結果」を配置 レシピを行に配置 レシピをデータにも配置 ページフィールドからあきつ丸を抽出してみると、全76件の中で4000/6000/6000/2000/20のセットが最も数が多く、17件報告されていました。 ちなみにご質問の4000/4000/2000/5000/20」というレシピでは、あきつ丸の報告は一件もありません。 今度は、では今の「4000/6000/6000/2000/20」の資材セットから、何が合成できるか見てみます。 レシピをページフィールドに移動、結果を行に移動します レシピを「4000/6000/6000/2000/20」で絞ってみます すると全部で339件の報告中、最大では大和が42件報告されています。

  • bunjii
  • ベストアンサー率43% (3589/8248)
回答No.3

>この回答を読む限りだと、不要なデータをコンピュータに判断させて削除させていくのは難しそうなのかな。 コンピューターはどれが必要でどれが不要かを知りませんので判断基準をあなたが示さないと何もできません。 そのために種々の関数やマクロのプログラムを使います。 コンピューター自身が関数の組み合わせやマクロを自動的に組み上げません。 >普通に考えれば、上のレシピでの大鳳出現回数/上のレシピの総数で求めることができますが、サンプル数が多いため、目で追って条件にあった行を発見していくのは大変です。 条件さえ提示できれば関数の組み合わせで条件に合ったデータの数を計数できます。 あなたの質問では具体的な計数要素について提示されていませんので取り敢えず有効なデータの整理から取り掛かって考え方を纏めてください。 総数は有効データの総数と言うことでしょうから有効データの定義を決めて一致するレコード数(行数)をカウントします。 出現回数も現在提示されている燃料/弾薬/鋼材/ボーキサイト/開発資材/結果(艦名?)の全てが一致するものか、結果と幾つかの項目が一致するものを選ぶかは集計の目的で変わるでしょう。 私はこのゲームを知りませんので単純に「出現率は何%になるか」との設問に回答できません。

purimanikki
質問者

補足

難しく捉えられてしまっているような気がします。 データは↓にあります。 http://wikiwiki.jp/kancolle/?cmd=read&page=%A5%B3%A5%E1%A5%F3%A5%C8%2F%C2%E7%B7%BF%B4%CF%B7%FA%C2%A4%2F%A5%EC%A5%B7%A5%D4%A5%ED%A5%B055 wikiのURLは直リンクが正しく貼られないことがあるようなので、下記のwikiTOPページから↓のようにたどればデータが多数あります。 http://wikiwiki.jp/kancolle/ Top > コメント > 大型艦建造 > レシピログ55 【質問1】 3800/2500/5000/4200/20のレシピでの、あきつ丸が出る確率を求めるにはどうすればいいか 【質問2】 他のレシピでもあきつ丸の出る確率を求め、どのレシピで一番あきつ丸が出現するか求めるにはどうすればいいか 後、私はデータ分析のやり方を学びたいのであって、単純に「出現率は何%になる」という回答を求めているわけではありません。

  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.2

ん? そのデータからの手順で回答済みですが、関数でごしょごしょやっつける手順を採用されたんじゃなかったんですか。 >こういったデータを取り除くにはどうすればいいでしょうか? 元データ(エクセルに貼り付けた直後)の状態でざっくり並べ替えて、イレギュラーを集めて取り除いてしまうのが一番手っ取り早そうに見えました。 とは言え実際には人手で記入されたネタの集まりなんで、「イレギュラーのパターン」を漏れなく抽出するというのは、現実的な対処ではありません。上述のような手法で大まかな処理をした後は、個別に間違い探しをしてください。 切り離しをしたあと、各列ごとにオートフィルタでチェックしてみるのも良い方法です。 >出現率を求めるにはどうすればよいでしょうか? 具体的に何を計算してみたいのか決まってないというか、そもそも何を計算したいのか考えるところからのご質問ですね。 とりあえず手掛かりを探るため、ピボットテーブルレポートなどで整理してみると良いでしょう。 http://www.microsoft.com/japan/office/previous/xp/suminaka/excel/sousa/2000/kihon2_1.htm

purimanikki
質問者

補足

最初の疑問に関して、現状は前述した通り、HTMLからエクセルにデータを抽出しただけです。 不要なデータに関しては、手作業でざっくり消していくしかなさそうですね。 オートフィルタに関して後ほど調べてみます。 具体的に何を計算するかは決まっていますよ? 【抽出したデータ】から、Aという艦娘のレシピ毎の出現率です。 例えば、「4000 4000 2000 5000 20」というレシピでの「あきつ丸」の出現率をどこかのセルに表示させたいです。

関連するQ&A

  • ホームページのデータをエクセルに抽出したい

    下記のサイトに某ゲームの大型建造の報告が多数挙げられているのですが、これらのデータを使ってエクセルでデータ分析を行ってみたいと考えています。 http://wikiwiki.jp/kancolle/?%A5%B3%A5%E1%A5%F3% … こちらのサイトには、↓のようなフォーマットの書き込みが多数あるのですが 4000/2000/5000/5200 開発資材:20 空きドック:1 司令:79 秘書:瑞鳳改38 結果:龍驤 -- 2014-02-09 (日) 09:16:52 New これらのデータをホームページ上から、エクセルに↓のようにデータを抽出していきたいのですが どうすればできますでしょうか? 燃料 資材 鋼材 ボーキサイト 開発資材  結果 4000 2000 5000  5200     20      龍驤 ・ ・ ・

  • エクセルを使ってスレッドから必要なデータを抽出

    ご閲覧ありがとうございます。 私は、掲示板のスレッドからエクセルで必要なデータを抽出する作業を勉強しています。 過去の質問や検索で自分なりに調べた結果、スレッド内で「すべて選択」してエクセルのセルに「貼り付け」し、列を暗転させた後に「データ」→「フィルタ」→「オートフィルタ」→「(オプション)」で“必要なデータの文字を含む行の抽出”ができました。 私の現段階の目標は、“スレッド内の投稿者IDのみを抽出し、セルに貼り付けて並べる(縦・横どちらでも構わない)”です。 これまでの知識では、IDと共にハンドルネームやレス番号が含まれた状態で抽出されるので、膨大な量では検索したり比較することが困難です。 どなたか手解き頂きたく存じます。

  • 艦これで開発ができません

    DMM GAMESの艦隊コレクションをやっております。下のサイトに次のように書いてあったので早速作ってみようとしたのですが、必要な材料を入力しても、「開発開始」ボタンが有効になりません。何が原因と考えられますか? 燃料10/弾薬31/鋼材30/ボーキ10 駆逐艦の主砲狙い。「10cm連装高角砲」が当たり装備といえる。 https://kamigame.jp/%E8%89%A6%E3%81%93%E3%82%8C/%E5%88%9D%E5%BF%83%E8%80%85%E3%82%AC%E3%82%A4%E3%83%89/index.html

  • データの無いテーブルと結合してデータ抽出

    以下のテーブルを使用してデータを抽出したいのですが、データが抽出できません。 名称テーブル -------------------- ID | NAME | -------------------- 0   AA 1   BB 2   EE 3   FF 履歴テーブル -------------------- ID | DAY | OLDNAME -------------------- 2   2004   CC 3   2004   DD 結果取得したいデータ -------------------- ID | NAME | OLDNAME -------------------- 0   AA =現在のSQL= SELECT A.ID, A.NAME, B.OLDNAME FROM 名称 A , 履歴 B WHERE A.ID = B.ID(+) AND A.ID=0 AND B.DAY =  (SELECT MAX(C.DAY)  FROM 履歴 C  WHERE  A.ID = C.ID(+)) 履歴テーブルには名称テーブルの履歴があります。 履歴にデータが無くても名称データを取得したいのですが、こういった場合はどのようなSQLを作ればいいのでしょうか。

  • SQL Server 縦データを横データに

    お世話になります。 下記のテーブルから下記の条件で データを出力するSQL文を作成したいのです。 アドバイスお願い致します。 条件1:NAMEはAを抽出 条件2:ICHIはグループ集計 条件3:ITEMはD2とD3を抽出 TESTテーブル NAME ICHI ITEM DATA ----- ---- ---- ---- A A1 D1 1 A A1 D2 2 A A1 D3 3 A A1 D4 4 A A2 D1 10 A A2 D2 20 A A2 D3 30 A A2 D4 40 B A3 D1 100 B A3 D2 200 B A3 D3 300 B A3 D4 400 データ出力結果 NAME ICHI DATA DATA ----- ---- ---- ---- A A1 2 3 A A2 20 30

  • X個グループからY個ずつデータを抽出したい

    例:グループの数は100ぐらいがあって、グループごとのレコード数はそれぞれであり、毎回そのうちのX(例3)グループずつにデータを抽出します。そして1つのグループから最大Y個(例2)のデータを抽出します。 抽出したデータにフラグを立てて、次の抽出時に除外の条件として使います。 例:以下のテーブルがあって、毎回3グループから2個のデータを抽出します: group name flag ---------------------------------------------------------------------------- 1_group 田中A          0     1_group 佐藤A          0     1_group 林A           0     1_group 鈴木A           0     1_group 牧野A           0     2_group 平田B          0     2_group 小林B          0     ・・・ 3_group 高橋C          0     3_group 丹羽C          0     3_group 田中C          0     3_group 佐藤C          0     3_group 鈴木C          0     3_group 吉田C          0     ・・・ 4_group 高橋D          0     4_group 丹羽D          0     4_group 田中D          0     4_group 佐藤D          0     4_group 鈴木D          0     ・・・ (1)1回目の抽出の結果 group name flag ---------------------------------------------------------------------------- 1_group 田中A          0     1_group 佐藤A          0     2_group 平田B          0     2_group 小林B          0     3_group 高橋C          0     3_group 丹羽C          0     (2)2回目の抽出の結果 group name flag ---------------------------------------------------------------------------- 1_group 林A           0     1_group 鈴木A           0     3_group 田中C          0     3_group 佐藤C          0     4_group 高橋D          0     4_group 丹羽D          0     (3)3回目の抽出の結果 group name flag ---------------------------------------------------------------------------- 1_group 牧野A           0     3_group 鈴木C          0     3_group 吉田C          0     4_group 田中D          0     4_group 佐藤D          0     DBはSqlLiteです。 長いですが、ご教授頂ければ、ありがたいです

  • Excelでの抽出方法を教えてください

    Excelに以下のデータが入力されています。 氏名  日付 都市名 Aさん  9/8 東京 Bさん 9/15 大阪 Cさん 9/16 仙台 Bさん 9/19 名古屋 Cさん 9/22 前橋 Dさん 9/22 横浜 Cさん 9/22 清水 Aさん 9/30 東京 これらのデータから氏名欄に出現する氏名の一覧を抽出したいのです 求められている結果は Aさん Bさん Cさん Dさん です。 何か方法はあるでしょうか。

  • C#のdatatableを配列に挿入し、DataGridViewにバインドする方法

    開発環境:VS2005 はじめまして。ゆかりともうします。 今悩んでいるのが、datatableに入っているオブジェクトを配列に挿入し、 文字列編集後にDataGridViewに表示させたいのですが、やり方がわかりません。 お手数ですが、どなたかご教示いただけないでしょうか? コードサンプル) ArrayList array = new ArrayList(); select * from name; using (System.Data.DataTable dataTable = new DataTable()) { this.sqlDataAdapter.Fill(dataTable); <---どのように記述してよいのか分かりません---> } ※select文で抽出されてくる項目は5つございます。 すみませんが、よろしくお願い致します。

  • ADO接続からのACCESSデータシートへの表示について

    ADO接続して、ACCESSのデータシートへ表示できないので、困っております。下記の処理を実行すると、テーブルの最後データ行(1行)しかデータシートへ表示できません。 Debug.printにて、データは正しく抽出できることは確認しており、おそらくACCESSデータシートが新しく追加できないことが原因だと思います。 わかる方がいらっしゃいましたら、ご指導いただけないでしょうか。 ●以下にソース記述 -------------------------------------------------- Private Sub Form_Load() Dim cn As ADODB.Connection Dim rs As ADODB.Recordset Dim StrSQL As String Set cn = CurrentProject.Connection StrSQL = "SELECT * " _ & "FROM LIST; " Set rs = New ADODB.Recordset rs.Open StrSQL, cn, adOpenKeyset, adLockReadOnly Do Until rs.EOF Forms![F_LIST抽出]![ID] = rs!ID_LIST Forms![F_LIST抽出]![NAME] = rs!NAME_LIST rs.MoveNext Loop rs.Close: Set rs = Nothing cn.Close: Set cn = Nothing End Sub ------------------------------------------------ フォーム(F_LIST抽出)を開くと、LIST(テーブル)のID_LISTとrs!NAME_LISTをデータシートを表示 ※フォームでは、ただデータシートを表示している ●わからないこと  たとえば、99件あるレコードをフォームから表示する と1行しか表示されず、そのデータは99件目が表示される。

  • あるフィールドの最大値を条件にデータを抽出する方法

    Access97のVBAで開発を行っています。SQLでデータの抽出で、あるフィールドの最大値を条件に指定して抽出する方法を教えてください。最大値という曖昧な条件なため、悩んでいます。 (例)ある学校の成績テーブル(左から、学籍番号,組,氏名,性別,科目,点数) 0103,鈴木,男,国語,95 0103,鈴木,男,数学,40 0103,鈴木,男,英語,80 0104,高橋,男,国語,45 0104,高橋,男,数学,85 0104,高橋,男,英語,55 | |(SQLで各人の最高点のデータのみ抽出したい) ↓ (抽出結果) 0103,鈴木,男,国語,95 0104,高橋,男,数学,85 知っている方、是非教えてください。 お願いします。

専門家に質問してみよう