30 の Python 関数がデータ処理タスクの 99% を解決します。

WBOY
リリース: 2023-04-15 10:07:02
転載
987 人が閲覧しました

30 の Python 関数がデータ処理タスクの 99% を解決します。

Pandas が Python で最も広く使用されているデータ分析および操作ライブラリであることはわかっています。データ分析におけるデータ処理の問題を迅速に解決するための多くの機能と方法を提供します。

Python 関数の使用法をよりよく習得するために、顧客離れデータ セットを例として、データ分析プロセスで最も一般的に使用される 30 個の関数とメソッドを共有しました。データは次の場所からダウンロードできます。記事の終わり。

データは次のとおりです:

import numpy as np
import pandas as pd
df = pd.read_csv("Churn_Modelling.csv")
print(df.shape)
df.columns

ログイン後にコピー

結果出力

(10000, 14)
Index(['RowNumber', 'CustomerId', 'Surname', 'CreditScore', 'Geography','Gender', 'Age', 'Tenure', 'Balance', 'NumOfProducts', 'HasCrCard','IsActiveMember', 'EstimatedSalary', 'Exited'],dtype='object')

ログイン後にコピー

1. 列を削除します

df.drop(['RowNumber', 'CustomerId', 'Surname', 'CreditScore'], axis=1, inplace=True)
print(df[:2])
print(df.shape)

ログイン後にコピー

結果出力

説明: " axis 」パラメータは、列の場合は 1、行の場合は 0 に設定されます。変更を保存するには、「inplace=True」パラメータを True に設定します。 4 つの列を差し引いたので、列の数は 14 から 10 に減りました。

GeographyGenderAgeTenureBalanceNumOfProductsHasCrCard
0FranceFemale 42 20.011
 IsActiveMemberEstimatedSalaryExited
0 1101348.88 1
(10000, 10)

ログイン後にコピー

2. 特定の列の選択

csv ファイルから部分的な列データを読み取ります。 usecols パラメータを使用できます。

df_spec = pd.read_csv("Churn_Modelling.csv", usecols=['Gender', 'Age', 'Tenure', 'Balance'])
df_spec.head()

ログイン後にコピー

3.nrows

nrows パラメーターを使用して、csv ファイルの最初の 5000 行を含むデータ フレームを作成できます。 Skiprows パラメータを使用して、ファイルの末尾から行を選択することもできます。 Skiprows=5000 は、csv ファイルを読み取るときに最初の 5000 行をスキップすることを意味します。

df_partial = pd.read_csv("Churn_Modelling.csv", nrows=5000)
print(df_partial.shape)

ログイン後にコピー

4. サンプル

データ フレームを作成した後、データをテストするために小さなサンプルが必要になる場合があります。 n または frac パラメータを使用してサンプル サイズを決定できます。

df= pd.read_csv("Churn_Modelling.csv", usecols=['Gender', 'Age', 'Tenure', 'Balance'])
df_sample = df.sample(n=1000)
df_sample2 = df.sample(frac=0.1)

ログイン後にコピー

5.欠損値の確認

isna 関数は、データ フレーム内の欠損値を特定します。 isna を sum 関数とともに使用すると、各列の欠損値の数を確認できます。

df.isna().sum()

ログイン後にコピー

6. loc と iloc を使用して欠損値を追加します

loc と iloc を使用して欠損値を追加します。この 2 つの違いは次のとおりです:

  • loc: select with label
  • iloc: selectindex

まず、選択用に 20 個のランダムなインデックスを作成します。

missing_index = np.random.randint(10000, size=20)

ログイン後にコピー

loc を使用して、いくつかの値を np.nan (欠損値) に変更します。

df.loc[missing_index, ['Balance','Geography']] = np.nan

ログイン後にコピー

20 個の値が「残高」列と「地域」列にありません。 iloc を使用して別の例を実行してみましょう。

df.iloc[missing_index, -1] = np.nan

ログイン後にコピー

7.欠損値を埋める

fillna 関数は欠損値を埋めるために使用されます。多くのオプションが提供されます。特定の値、平均などの集計関数、または前後の値を使用できます。

avg = df['Balance'].mean()
df['Balance'].fillna(value=avg, inplace=True)

ログイン後にコピー

fillna 関数のメソッド パラメーターを使用して、列の前または次の値に基づいて欠損値を埋めることができます (たとえば、method="ffill")。時系列などの連続データの場合に非常に役立ちます。

8.欠損値の削除

欠損値に対処する別の方法は、欠損値を削除することです。次のコードは、値が欠落している行を削除します。

df.dropna(axis=0, how='any', inplace=True)

ログイン後にコピー

9. 条件に基づいて行を選択します

場合によっては、特定の条件に適合する観測値 (つまり、行) が必要になります

france_churn = df[(df.Geography == 'France') & (df.Exited == 1)]
france_churn.Geography.value_counts()

ログイン後にコピー

10. クエリを使用して条件を説明します

クエリ関数は、条件を渡すためのより柔軟な方法を提供します。文字列を使用してそれらを記述することができます。

df2 = df.query('80000 < Balance < 100000')
df2 = df.query('80000 < Balance < 100000'
df2 = df.query('80000 < Balance < 100000')

ログイン後にコピー

11. isin を使用して条件を記述します

条件には複数の値を指定できます。この場合、個別に値を記述するよりも isin メソッドを使用した方が良いでしょう。

df[df['Tenure'].isin([4,6,9,10])][:3]

ログイン後にコピー

30 の Python 関数がデータ処理タスクの 99% を解決します。

12.Groupby 関数

Pandas Groupby 関数は、データの概要を把握するのに役立つ多用途で使いやすい関数です。これにより、データセットを探索し、変数間の根底にある関係を明らかにすることが容易になります。

グループ比関数の例をいくつか実行します。簡単に始めましょう。次のコードは、地理と性別の組み合わせに基づいて行をグループ化し、各グループの平均フローを示します

df[['Geography','Gender','Exited']].groupby(['Geography','Gender']).mean()

ログイン後にコピー

13.Groupbyと集計関数

agg関数を組み合わせると、複数のアプリケーションで次のことが可能になります。引数として渡される関数のリストを使用して、集計関数をグループに適用できます。

df[['Geography','Gender','Exited']].groupby(['Geography','Gender']).agg(['mean','count'])

ログイン後にコピー

14. 異なるグループに異なる集計関数を適用する

df_summary = df[['Geography','Exited','Balance']].groupby('Geography').agg({'Exited':'sum', 'Balance':'mean'})
df_summary.rename(columns={'Exited':'# of churned customers', 'Balance':'Average Balance of Customers'},inplace=True)

ログイン後にコピー

さらに、「NamedAgg 関数」を使用すると、集計内の列の名前を変更できます

import pandas as pd
df_summary = df[['Geography','Exited','Balance']].groupby('Geography').agg(Number_of_churned_customers = pd.NamedAgg('Exited', 'sum'),Average_balance_of_customers = pd.NamedAgg('Balance', 'mean'))
print(df_summary)

ログイン後にコピー

30 の Python 関数がデータ処理タスクの 99% を解決します。

##15.インデックスのリセット

#上の図のデータ形式に気づきましたか?インデックスをリセットすることでこれを変更できます。

print(df_summary.reset_index())

ログイン後にコピー

30 の Python 関数がデータ処理タスクの 99% を解決します。

16. 元のインデックスのリセットと削除

場合によっては、インデックスのリセットと元のインデックスの削除を同時に行う必要があります。

df[['Geography','Exited','Balance']].sample(n=6).reset_index(drop=True)

ログイン後にコピー

17. 特定の列をインデックスとして設定

データ フレーム内の任意の列をインデックスとして設定できます。

df_new.set_index('Geography')

ログイン後にコピー

18.新しい列を挿入

group = np.random.randint(10, size=6)
df_new['Group'] = group

ログイン後にコピー

19.where関数

条件に基づいて行または列の値を置換するために使用されます。デフォルトの置換値は NaN ですが、置換値を指定することもできます。

df_new['Balance'] = df_new['Balance'].where(df_new['Group'] >= 6, 0)

ログイン後にコピー

20. ランク関数

ランク関数は、値にランキングを割り当てます。残高に基づいて顧客をランク付けする列を作成してみましょう。

df_new['rank'] = df_new['Balance'].rank(method='first', ascending=False).astype('int')

ログイン後にコピー

21. 列内の固有の値の数

カテゴリ変数を扱うときに便利です。固有のカテゴリの数を確認する必要がある場合があります。 value count 関数によって返されるシーケンスのサイズを確認することも、nunique 関数を使用することもできます。

df.Geography.nunique

ログイン後にコピー

22. メモリ使用量

関数memory_usageを使用すると、これらの値はメモリをバイト単位で表示します。

df.memory_usage()

ログイン後にコピー

30 の Python 関数がデータ処理タスクの 99% を解決します。

23.数据类型转换

默认情况下,分类数据与对象数据类型一起存储。但是,它可能会导致不必要的内存使用,尤其是当分类变量具有较低的基数。

低基数意味着列与行数相比几乎没有唯一值。例如,地理列具有 3 个唯一值和 10000 行。

我们可以通过将其数据类型更改为"类别"来节省内存。

df['Geography'] = df['Geography'].astype('category')

ログイン後にコピー

24.替换值

替换函数可用于替换数据帧中的值。

df['Geography'].replace({0:'B1',1:'B2'})

ログイン後にコピー

25.绘制直方图

pandas 不是一个数据可视化库,但它使得创建基本绘图变得非常简单。

我发现使用 Pandas 创建基本绘图更容易,而不是使用其他数据可视化库。

让我们创建平衡列的直方图。

30 の Python 関数がデータ処理タスクの 99% を解決します。

26.减少浮点数小数点

pandas 可能会为浮点数显示过多的小数点。我们可以轻松地调整它。

df['Balance'].plot(kind='hist', figsize=(10,6),
title='Customer Balance')

ログイン後にコピー

27.更改显示选项

我们可以更改各种参数的默认显示选项,而不是每次手动调整显示选项。

  • get_option:返回当前选项
  • set_option:更改选项 让我们将小数点的显示选项更改为 2。
pd.set_option("display.precision", 2)

ログイン後にコピー

可能要更改的一些其他选项包括:

  • max_colwidth:列中显示的最大字符数
  • max_columns:要显示的最大列数
  • max_rows:要显示的最大行数

28.通过列计算百分比变化

pct_change用于计算序列中值的变化百分比。在计算时间序列或元素顺序数组中更改的百分比时,它很有用。

ser= pd.Series([2,4,5,6,72,4,6,72])
ser.pct_change()

ログイン後にコピー

29.基于字符串的筛选

我们可能需要根据文本数据(如客户名称)筛选观测值(行)。我已经在数据帧中添加了df_new名称。

30 の Python 関数がデータ処理タスクの 99% を解決します。

df_new[df_new.Names.str.startswith('Mi')]

ログイン後にコピー

我们可能需要根据文本数据(如客户名称)筛选观测值(行)。我已经在数据帧中添加了df_new名称。

30 の Python 関数がデータ処理タスクの 99% を解決します。

30.设置数据样式

我们可以通过使用返回 Style 对象的 Style 属性来实现此目的,它提供了许多用于格式化和显示数据框的选项。例如,我们可以突出显示最小值或最大值。

它还允许应用自定义样式函数。

df_new.style.highlight_max(axis=0, color='darkgreen')

ログイン後にコピー

30 の Python 関数がデータ処理タスクの 99% を解決します。

以上が30 の Python 関数がデータ処理タスクの 99% を解決します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:51cto.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート