🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Jupyter

Jupyter (旧IPython notebook)は、Notebook形式でドキュメント作成し、プログラムの記述・実行、その実行結果を記録するツールです。メモの作成や保存、共有、確認などもブラウザ上で行うことができます。

CSV

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

Matplotlib

MatplotlibはPythonのおよび、NumPy用のグラフ描画ライブラリです。多くの場合、IPythonと連携して使われます。

Python

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

pandas

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

Q&A

3回答

2811閲覧

超初心者です。CSVから取り込んだデータの1列のみを円グラフにしたい。

chy09

総合スコア0

Jupyter

Jupyter (旧IPython notebook)は、Notebook形式でドキュメント作成し、プログラムの記述・実行、その実行結果を記録するツールです。メモの作成や保存、共有、確認などもブラウザ上で行うことができます。

CSV

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

Matplotlib

MatplotlibはPythonのおよび、NumPy用のグラフ描画ライブラリです。多くの場合、IPythonと連携して使われます。

Python

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

pandas

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

0グッド

0クリップ

投稿2021/03/16 14:32

前提・実現したいこと

KaggleよりダウンロードしたCSVデータの中の'type'という列があり、データは'conventional'と'organic'の2つの値があり'type'列のデータ数は、18,248個あります。
この2つ値の割合を円グラフにて比率を見たいのですが、円グラフの作成ができません。。。どなたかお助けください。

環境:JupyterLabo

#下記のライブラリをインポート
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline

#CSVの読み込みは問題なく行えてます。
df = pd.read_csv(data, encoding="UTF-8")

#下記のようにカラム名を指定し、円グラフを作成
df_pie = df['type']
label = ['conventional','organic' ]
plt.pie(df_pie=value, labels=label)
plt.show()

発生している問題・エラーメッセージ

エラーメッセージ --------------------------------------------------------------------------- TypeError Traceback (most recent call last) <ipython-input-24-9e5ca7338c41> in <module> 1 df_pie = df['type'] 2 label = ['conventional','organic' ] ----> 3 plt.pie(df_pie=value, labels=label) 4 plt.show() TypeError: pie() got an unexpected keyword argument 'df_pie'

試したこと

いろんなサイトで色な方法で円グラフを試しましたが、その度エラーが出てしまいます。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

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

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

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

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

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

guest

回答3

0

matplotlib.pyplot.pieをみると、xに配列を、labelsにラベルを入れろとあるので、plt.pie(df_pie=value, labels=label)を正しく書くとplt.pie(x=df_pie, labels=label)になると思います。

そして、ValueError: could not convert string to float: 'conventional'に関しては、
・type列が数値だと円グラフ出る

python3

1import pandas as pd 2import matplotlib.pyplot as plt 3df = pd.DataFrame({"type":[10,20]}) 4label = ['conventional','organic' ] 5plt.pie(x=df["type"], labels=label) 6plt.show()

・type列が文字列だとエラー出る
というわけで、dataframeのtype列が、文字列のものを指定してしまっているのではないでしょうか。

python3

1import pandas as pd 2import matplotlib.pyplot as plt 3df = pd.DataFrame({"type":['conventional','organic' ]}) 4label = ['conventional','organic' ] 5plt.pie(x=df["type"], labels=label) 6plt.show() 7 8# ValueError: could not convert string to float: 'conventional'

投稿2021/03/17 05:54

編集2021/03/17 05:58
jeanbiego

総合スコア3966

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

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

chy09

2021/03/17 11:31

ご回答ありがとうございました。こちら上手くいきました。
guest

0

そのままのデータの羅列ではグラフ化できないので、まず、plotするための数値を求めないといけないです。
個数を数えるか、割合を計算すればいいですが、それにはDataFrame.value_counts()を使います。
(グラフの形は、個数でも割合でも同じになるはずです。)

python

1import pandas as pd 2import matplotlib.pyplot as plt 3 4df = pd.read_csv(data, encoding="UTF-8") 5 6# value_counts()でtype列の各値の個数を数える 7type_counts = df['type'].value_counts() 8## normalize=Trueでやると割合が求められる 9# type_counts = df['type'].value_counts(normalize=True) 10 11plt.pie(type_counts, labels=type_counts.index) 12plt.show()

投稿2021/03/17 05:39

bsdfan

総合スコア4794

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

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

0

エラーメッセージに書かれているとおりで、plt.piedf_pieなどというパラメータはないのでエラーとなっているのでしょう。素直にマニュアル通りにやってみればいいと思うのですが。

https://pythondatascience.plavox.info/matplotlib/%E5%86%86%E3%82%B0%E3%83%A9%E3%83%95

投稿2021/03/16 15:23

KojiDoi

総合スコア13692

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

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

chy09

2021/03/17 00:09

ご回答ありがとうございます。こちらでも試したのですが、別のエラーが出てしまいます。 x = df['type'] label = ['conventioal','organic'] plt.pie(x, labels=label) とすると、ValueError: could not convert string to float: 'conventional'と表示されます。ラベル名をNoneにしても同じエラーが出てしまいます。。。 plt.show()
KojiDoi

2021/03/17 04:35

xの先頭行に実データではなく項目名(conventonal)が入っていたりしませんか。
chy09

2021/03/17 11:33

ありがとうございます。上手く表示できました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問