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 1 year has passed since last update.

pandasの使い方 〜Python〜

Last updated at Posted at 2023-08-06

Pythonは読みやすく・書きやすく・理解しやすい言語です(なので私は好きです)
ライブラリが豊富で、他の言語だと数行書かないといけないところをPythonだと1行で同じ処理を書くことができます

例えばJavaと比較すると

main.java
int[] numbers = {1, 2, 3, 4, 5};
for (int i = 0; i < numbers.length; i++) {
    numbers[i] = numbers[i] * 2;
}
for (int number : numbers) {
    System.out.println(number);
}
app.py
numbers = [1, 2, 3, 4, 5]
numbers = [x * 2 for x in numbers]
print(numbers)

javaとPythonのそれぞれで配列の中の数字を2倍にする処理を作成する処理を作成しました。
Javaだと2倍にする処理をfor文で3行で書いていますが、Pythonだと1行で書けます

このようにシンプル差がPythonの良いところです

また、Pandasはデータ分析、操作できるライブラリです
今回はPandasを使用する時に、よく使われる処理を10個ご紹介します
チートシートとして参考にしてください

pandasをimportするコードです

import pandas as pd

1.CSVを読み込む

CSVファイルを読み取りDataFrame型の変数に格納します

df = pd.read_csv('data.csv')

2.NULL値を含む列を削除します

df.drop(df.columns[df.isnull().sum() > 0], axis=1, inplace=True)

isnull()でDataFrame内の各要素に欠損値(NULL値)があるか判定します
その後のsum()で欠損値の個数を計算します
axis=1で列方向(縦)に削除するように設定しています
axis=0で行方向(横)に指定できます

3.既存の列を基に新しい列を作成

f['new_col'] = df.apply(lambda x: x['col_1'] * x['col_2'], axis=1)

apply()で各行に対してデータ操作を行う設定をします
lambda式で'col_1'と'col_2'の掛け算処理しています

4.列のグループ化と平均の計算

df.groupby('col_1').mean()

groupbyでグループ化します
mean()で平均値を取得します

5.条件を満たす行を取得

df.loc[df['col_1'] == 'abc']

locを使い、列'col_1'が'abc'の列を取得します

6.並べ替え

df.sort_values(by='col_name', ascending=False)

sort_valuesでソート処理を行います
byにソート基準の列を設定します
ascending=Falseで降順にソートします(大→小)
ascending=Trueで昇順にソートできます(小→大)

7.欠損している要素に0を設定

df.fillna(0)

NaNやNULL値の欠損している要素を0埋めします

8.重複行を削除

df.drop_duplicates()

9.ピボットテーブルを作成

df.pivot_table(index='col_1', columns='col_2', values='col_3')

例えば、ピボットテーブルを作成し、平均値で集計します

pivot.py
data = {
    'col_1': ['A', 'A', 'B', 'B', 'A', 'B'],
    'col_2': ['X', 'Y', 'X', 'Y', 'X', 'Y'],
    'col_3': [10, 20, 30, 40, 50, 60]
}

df = pd.DataFrame(data)

# ピボットテーブルを作成して表示
pivot_table = df.pivot_table(index='col_1', columns='col_2', values='col_3')
print(pivot_table)
# 出力結果
#col_1/col_2   X   Y
#A            30  20
#B            45  40

appfuncを設定することで合計(sum)、最小(min)、最大(max)で集計できます

pivot_table = df.pivot_table(index='col_1', columns='col_2', values='col_3', appfunc=sum)

10.CSVファイルに保存

df.to_csv('data.csv', index=False)
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?