0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Pandas of the beginner, by the beginner, for the beginner [Python]

Last updated at Posted at 2020-04-05

#この記事を読む前に
これは自分が忘れないように記したものに少し情報を足してまとめたものです。
読みにくい、分かりにくい場合があれば修正しますのでコメントください。

finallpandas.png
引用先:https://www.geeksforgeeks.org/python-pandas-dataframe/

###使用する開発環境

  1. anaconda
  2. Pycharm
  3. Python3.7.7

編集履歴
-2020/04/05
-2020/04/05
--追記 データの削除

#Pandasを始める前に

#インストール、インポート
pip install pandas
import pandas as pd

#では実際にpandasをいじってみます。

##データを取得
pandasを用いて、何かしたい場合、取得必要があります。
csvなどにして準備しておきます。
今回はコロナウイルスの感染者(兵庫県)を使ってみます。

url = "https://web.pref.hyogo.lg.jp/kk03/corona_hasseijyokyo.html"
dfs = pd.read_html(url)
print(dfs[0].head())
#プロンプト上でHTMLの表を表示する

>>>
     0   1   2            3    4     5    6
0   番号  年代  性別          居住地   職業   発表日   備考
1  162  40  男性          神戸市   医師  4月1日  NaN
2  161  20  男性  伊丹健康福祉事務所管内  会社員  4月1日  NaN
3  160  50  女性          宝塚市   無職  4月1日  NaN
4  159  60  男性          宝塚市   医師  4月1日  NaN
#HTML上の表をcsvにする。
#テキストエディタ

import csv

tables = pd.read_html("https://web.pref.hyogo.lg.jp/kk03/corona_hasseijyokyo.html", header=0)
data = tables[0]
data.to_csv("coronaHyogo.csv", index=False)  # 出力

##CSVの読み込み

dfs = pd.read_csv('C:/Users/Desktop/coronaHyogo.csv')
print (dfs)
#CSVをpandasで開く

>>>
     番号  年代  性別             居住地   職業    発表日   備考
0   169  40  男性             尼崎市  会社員   4月2日  NaN
1   168  60  男性             芦屋市  会社員   4月2日  NaN
2   167  50  男性     伊丹健康福祉事務所管内  会社員   4月2日  NaN
3   166  20  女性             伊丹市  NaN   4月2日  NaN
4   165  20  男性             明石市  NaN   4月2日  NaN
..  ...  ..  ..             ...  ...    ...  ...
64  105  70  男性             伊丹市   無職  3月21日  NaN
65  104  80  女性             宝塚市   無職  3月21日   死亡
66  103  60  男性             尼崎市  会社員  3月21日  NaN
67  102  40  女性  帰国者姫路市保健所発表分   無職  3月21日  NaN
68  101  20  男性             尼崎市   学生  3月20日  NaN

##データの確認

dfs.shape #dataframeの行数・列数の確認
>>> (69, 7)

dfs.index #indexの確認
>>> RangeIndex(start=0, stop=69, step=1)

dfs.columns #columnの確認
>>> Index(['番号', '年代', '性別', '居住地', '職業', '発表日', '備考'], dtype='object')

dfs.dtypes #dataframeの各列のデータ型を確認
>>>
番号      int64
年代      int64
性別     object
居住地    object
職業     object
発表日    object
備考     object
dtype: object

##情報の抜き出し

df.head(3)
#頭から3行目まで抜き出す。

>>>
    番号  年代  性別          居住地   職業   発表日   備考
0  169  40  男性          尼崎市  会社員  4月2日  NaN
1  168  60  男性          芦屋市  会社員  4月2日  NaN
2  167  50  男性  伊丹健康福祉事務所管内  会社員  4月2日  NaN
dfs.tail()
#後ろから抜き出す。

>>>
     番号  年代  性別             居住地   職業    発表日   備考
64  105  70  男性             伊丹市   無職  3月21日  NaN
65  104  80  女性             宝塚市   無職  3月21日   死亡
66  103  60  男性             尼崎市  会社員  3月21日  NaN
67  102  40  女性  帰国者姫路市保健所発表分   無職  3月21日  NaN
68  101  20  男性             尼崎市   学生  3月20日  NaN
dfs[["年代","性別","発表日"]].head()
#列を指定して抜き出す。

>>>
   年代  性別   発表日
0  40  男性  4月2日
1  60  男性  4月2日
2  50  男性  4月2日
3  20  女性  4月2日
4  20  男性  4月2日
row2 = dfs.iloc[3]
print(row2)
#上から3番目のデータのみを表示する。

>>>
番号      166
年代       20
性別       女性
居住地     伊丹市
職業      NaN
発表日    4月2日
備考      NaN

##データの整形

dfs.rename(columns={'性別': 'sex'}, inplace=True)
dfs.head()
#名称の変更(性別をsexに)

>>>
     番号  年代  sex           居住地   職業    発表日   備考
0   169  40  男性             尼崎市  会社員   4月2日  NaN
1   168  60  男性             芦屋市  会社員   4月2日  NaN
2   167  50  男性     伊丹健康福祉事務所管内  会社員   4月2日  NaN
dfs.set_index('年代', inplace=True)
dfs.head()
#

>>>
    番号  性別          居住地   職業   発表日   備考
年代
40  169  男性          尼崎市  会社員  4月2日  NaN
60  168  男性          芦屋市  会社員  4月2日  NaN
50  167  男性  伊丹健康福祉事務所管内  会社員  4月2日  NaN

dfs.index
>>>
Int64Index([40, 60, 50, 20, 20, 70, 50, 40, 20, 50, 60, 60, 60, 10, 30, 60, 10,
            30, 20, 60, 60, 30, 60, 60, 20, 70, 60, 20, 20, 30, 40, 40, 30, 20,
            20, 50, 30, 70, 60, 60, 70, 20, 60, 30, 50, 40, 30, 10, 50, 70, 20,
            80, 20, 80, 40, 70, 30, 80, 60, 70, 40, 70, 90, 80, 70, 80, 60, 40,
            20],
df.sort_values(by="年代", ascending=True).head() # ascending=Trueで昇順
# '年代'列を降順
# df.sort_values(['年代', '発表日'], ascending=False).head() #複数個も可能

>>>
    番号 sex          居住地     職業    発表日   備考
年代
10  122  女性          神戸市     学生  月27日  NaN
10  153  女性          尼崎市     学生   4月1日  NaN
10  156  女性          川西市  専門学校生   4月1日  NaN
20  135  女性  伊丹健康福祉事務所管内    会社員  3月30日  NaN
20  117  男性          西宮市     医師  3月24日  NaN
#データの削除
print(df.drop(columns=['番号','居住地']))

##データの数を数える

dfs['年代'].value_counts()
60    15
20    13
70     9
30     9
40     8
50     6
80     5
10     3
90     1
Name: 年代, dtype: int64

##統計的指標を求める

#平均
mean = dfs['年代'].mean()
print(mean) #46.3768115942029

# 合計
sum = dfs['年代'].sum()
print(sum) #3200

# 中央値
median = dfs['年代'].median()
print(median) #50.0

# 最大値
dfsmax = dfs['年代'].max()
print(dfsmax) #90

# 最小値
dfsmin = dfs['年代'].min()
print(dfsmin) #10


# 標準偏差
std = dfs['年代'].std()
print(std) #21.418176344401118

# 分散
var = dfs['年代'].var()
print(var) #458.73827791986366

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?