質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

NumPy

NumPyはPythonのプログラミング言語の科学的と数学的なコンピューティングに関する拡張モジュールです。

ネットワーク

ネットワークとは、複数のコンピューター間を接続する技術です。インターネットが最も主流なネットワークの形態で、TCP/IP・HTTP・DNSなどの様々なプロトコルや、ルータやサーバーなどの様々な機器の上に成り立っています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

Q&A

解決済

1回答

904閲覧

csvファイルから行列を生成したい

eve

総合スコア19

CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

NumPy

NumPyはPythonのプログラミング言語の科学的と数学的なコンピューティングに関する拡張モジュールです。

ネットワーク

ネットワークとは、複数のコンピューター間を接続する技術です。インターネットが最も主流なネットワークの形態で、TCP/IP・HTTP・DNSなどの様々なプロトコルや、ルータやサーバーなどの様々な機器の上に成り立っています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

0グッド

0クリップ

投稿2020/10/23 19:17

編集2020/11/27 07:47

現在、pandasを使って以下のcsvファイルから行列を生成しようとしています。

どのようにするのが適切でしょうか。
道筋が全く想像つかず、困っています。
numpyなどを使った方がいいのでしょうか。
アドバイスを頂けると幸いです。
こういう順序で処理していくといいというような考え方でも参考になります。
宜しくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Daregada

2020/10/23 22:14

Gi0/5とGi0/3の行列イメージが、CSVファイルの情報と一致していないのでは?
eve

2020/10/23 23:01

ご指摘ありがとうございます。すみません、誤っておりました。修正致しました。
guest

回答1

0

ベストアンサー

処理が逐次的なのでいまいちですが、こんな感じでできます。

Python

1import pandas as pd 2import io 3 4txt = """ 5,interface,MAC,vlan 60,Gi0/1,aa:aa:aa:aa:aa:aa,100.200 73,Gi0/7,bb:bb:bb:bb:bb:bb,100 84,Gi0/5,cc:cc:cc:cc:cc:cc,200 95,Gi0/3,dd:dd:dd:dd:dd:dd,100 10""" 11 12# CSVファイルから読み込むときは、io.StringIO(txt)をファイル名の文字列に変更 13# vlan列は文字列として読み込み、interface列をインデックスにして読み込み、他の列は読み込まない 14df = pd.read_csv(io.StringIO(txt), dtype={'vlan': str}, index_col=['interface'], usecols=['interface', 'vlan']) 15# print(df) 16 17# vlan列は区切り文字で分割してリストにする 18df['vlan'] = df['vlan'].str.split('.') 19# print(df) 20 21# vlan列のリストからvlanIDの集合(重複なし)を作成 22vlan_set = set(df['vlan'].sum()) 23# print(vlan_set) 24 25# 行列用のデータフレームを用意 26dfm = pd.DataFrame(index=df.index, columns=df.index).fillna(0) 27# print(dfm) 28 29# 各要素の値を逐次的に設定 30for id1 in df.index: 31 for id2 in df.index: 32 for vlan in vlan_set: 33 if id1 != id2 and vlan in df.at[id1, 'vlan'] and vlan in df.at[id2, 'vlan']: 34 dfm.at[id1, id2] = vlan 35 36print(dfm)

投稿2020/10/24 00:21

Daregada

総合スコア11990

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

eve

2020/10/24 08:07

プログラムの解説まで載せて頂き、ありがとうございました。 想定通りの動きができました。プログラムの動きを確認しながら 完璧に理解できるように頑張ります!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問