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

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

詳細はこちら
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

2回答

1561閲覧

Pythonで売上csvを折れ線グラフにしたい

kesuzuki

総合スコア1

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/02/15 04:07

前提・実現したいこと

プログラミング初心者でpandasの使い方を勉強中なのですが、必要な情報を取り出しMatplotを使い折れ線GRAPHにしたいのですが中々うまくいきません。
品名と個数そして日付けが入ったcsvから日付けをx軸にyを個数で表示したいです

該当のソースコード

Python

1import pandas as pd 2import numpy as np 3import matplotlib 4matplotlib.use('Agg') 5import matplotlib.pyplot as plt 6data = pd.read_csv('total.csv',encoding = 'UTF8') 7data 8word = '品名01' 9Word_df = data.query("品名 == @word") 10sxmin='2016-09-01' 11sxmax='2018-01-01' 12plt.xlim([sxmin,sxmax]) 13plt.ylim([0,200]) 14plt.xlabel('日付') 15plt.ylabel('月別売個数') 16 17x = pd.date_range('2016-9-1', '2018-1-1', freq='MS') 18y = [0,10,15,20,25,30,35,40,45,50,55,60,65,70]

試したこと

matplotlibの引数が多く全然理解に到達してません
お力添えいただきますと幸いです

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

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

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

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

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

jeanbiego

2021/02/15 04:20

そのままでは試せないコードなので、csvかデータフレームの中身を(ダミーデータで良いので)記載したほうが回答がつくと思います。
guest

回答2

0

私は、matplotlibは自分で使ったことがなかったので、練習に作ってみました。
一応、動いています。
windowsなので、日本語フォントはMS Gothicです。

python

1import pandas as pd 2import io 3import matplotlib.pyplot as plt 4from matplotlib import rcParams 5 6rcParams['font.family'] = "MS Gothic" 7 8indata = '''日付 品名 月別売個数 92016-09-01 品名01 100 102016-11-01 品名01 150 112016-12-01 品名01 50 122017-01-01 品名01 80 132016-09-01 品名02 30 142016-11-01 品名02 45 152016-12-01 品名02 60 162016-10-01 品名01 200 172017-01-01 品名02 120''' 18 19with io.StringIO(indata) as f: 20 df = pd.read_csv(f, sep=' +', engine='python') 21 22df2 = df.pivot(index='日付', columns='品名') 23df2.fillna(0, inplace=True) 24 25x_datas = range(1, df2.shape[0]+1) 26plt.xticks(x_datas, df2.index) 27for i in range(df2.shape[1]): 28 plt.plot(x_datas, df2.iloc[:,i], marker = 'o', label = df2.columns[i]) 29 30plt.xlim(0, df2.shape[0]+1) 31plt.ylim(0, max(df2.max().values)) 32plt.title('販売', fontsize = 20) 33plt.xlabel('日付', fontsize = 16) 34plt.ylabel('月別売個数', fontsize = 16) 35plt.grid(True) 36plt.legend(loc = 'upper right') 37plt.show()

売上グラフ

投稿2021/02/15 10:21

編集2021/02/15 10:24
ppaul

総合スコア24670

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

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

0

お役に立つか、分かりませんが。

python

1#!/usr/bin/env python3 2#-*- coding: utf-8 -*- 3 4import pandas as pd 5import numpy as np 6import matplotlib 7import matplotlib.pyplot as plt 8 9plt.style.use('ggplot') 10font = {'family': 'IPAexGothic'} 11matplotlib.rc('font', **font) 12 13title=u'売り上げ' 14sxmin='2016-09-01' 15sxmax='2018-01-01' 16x = pd.date_range('2016-9-1', '2018-1-1', freq='MS') 17y = [0,10,15,20,25,30,35,40,45,50,55,60,65,70] 18 19url = 'total.csv' 20df_sample = pd.read_csv(url, parse_dates=True, index_col=1) 21 22# dfの準備 23df = df_sample.iloc[:, 1:] 24 25# 月ごとに集計する場合。 26# 元のデータをコピーして操作します。 27#df_ = df_sample.iloc[:, 1:] 28#df = df_.copy() 29#df.index = df.index.map(lambda x: x.month) 30#df = df.groupby(level=0).sum() 31 32df.plot(xlim=[sxmin,sxmax]) 33df.plot(ylim=[0,200]) 34df.plot(xlabel='日付') 35df.plot(ylabel='月別売個数') 36 37df.plot(xticks=x) 38df.plot(yticks=y) 39 40df.plot.line(alpha=0.6, figsize=(12,3)) 41plt.title(title, size=16) 42 43#グラフ表示 44plt.show() 45 46#コマンドでpngへ出力する場合.showをコメントアウトする。 47#plt.savefig('test.png')

投稿2021/02/15 08:22

編集2021/02/15 13:06
phoepsilonix

総合スコア233

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問