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')
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)
csv ファイルから部分的な列データを読み取ります。 usecols パラメータを使用できます。
df_spec = pd.read_csv("Churn_Modelling.csv", usecols=['Gender', 'Age', 'Tenure', 'Balance']) df_spec.head()
nrows パラメーターを使用して、csv ファイルの最初の 5000 行を含むデータ フレームを作成できます。 Skiprows パラメータを使用して、ファイルの末尾から行を選択することもできます。 Skiprows=5000 は、csv ファイルを読み取るときに最初の 5000 行をスキップすることを意味します。
df_partial = pd.read_csv("Churn_Modelling.csv", nrows=5000) print(df_partial.shape)
データ フレームを作成した後、データをテストするために小さなサンプルが必要になる場合があります。 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)
isna 関数は、データ フレーム内の欠損値を特定します。 isna を sum 関数とともに使用すると、各列の欠損値の数を確認できます。
df.isna().sum()
loc と iloc を使用して欠損値を追加します。この 2 つの違いは次のとおりです:
まず、選択用に 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
fillna 関数は欠損値を埋めるために使用されます。多くのオプションが提供されます。特定の値、平均などの集計関数、または前後の値を使用できます。
avg = df['Balance'].mean() df['Balance'].fillna(value=avg, inplace=True)
fillna 関数のメソッド パラメーターを使用して、列の前または次の値に基づいて欠損値を埋めることができます (たとえば、method="ffill")。時系列などの連続データの場合に非常に役立ちます。
欠損値に対処する別の方法は、欠損値を削除することです。次のコードは、値が欠落している行を削除します。
df.dropna(axis=0, how='any', inplace=True)
場合によっては、特定の条件に適合する観測値 (つまり、行) が必要になります
france_churn = df[(df.Geography == 'France') & (df.Exited == 1)] france_churn.Geography.value_counts()
クエリ関数は、条件を渡すためのより柔軟な方法を提供します。文字列を使用してそれらを記述することができます。
df2 = df.query('80000 < Balance < 100000') df2 = df.query('80000 < Balance < 100000' df2 = df.query('80000 < Balance < 100000')
条件には複数の値を指定できます。この場合、個別に値を記述するよりも isin メソッドを使用した方が良いでしょう。
df[df['Tenure'].isin([4,6,9,10])][:3]
Pandas Groupby 関数は、データの概要を把握するのに役立つ多用途で使いやすい関数です。これにより、データセットを探索し、変数間の根底にある関係を明らかにすることが容易になります。
グループ比関数の例をいくつか実行します。簡単に始めましょう。次のコードは、地理と性別の組み合わせに基づいて行をグループ化し、各グループの平均フローを示します
df[['Geography','Gender','Exited']].groupby(['Geography','Gender']).mean()
agg関数を組み合わせると、複数のアプリケーションで次のことが可能になります。引数として渡される関数のリストを使用して、集計関数をグループに適用できます。
df[['Geography','Gender','Exited']].groupby(['Geography','Gender']).agg(['mean','count'])
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)
print(df_summary.reset_index())
df[['Geography','Exited','Balance']].sample(n=6).reset_index(drop=True)
df_new.set_index('Geography')
group = np.random.randint(10, size=6) df_new['Group'] = group
df_new['Balance'] = df_new['Balance'].where(df_new['Group'] >= 6, 0)
df_new['rank'] = df_new['Balance'].rank(method='first', ascending=False).astype('int')
df.Geography.nunique
df.memory_usage()
默认情况下,分类数据与对象数据类型一起存储。但是,它可能会导致不必要的内存使用,尤其是当分类变量具有较低的基数。
低基数意味着列与行数相比几乎没有唯一值。例如,地理列具有 3 个唯一值和 10000 行。
我们可以通过将其数据类型更改为"类别"来节省内存。
df['Geography'] = df['Geography'].astype('category')
替换函数可用于替换数据帧中的值。
df['Geography'].replace({0:'B1',1:'B2'})
pandas 不是一个数据可视化库,但它使得创建基本绘图变得非常简单。
我发现使用 Pandas 创建基本绘图更容易,而不是使用其他数据可视化库。
让我们创建平衡列的直方图。
pandas 可能会为浮点数显示过多的小数点。我们可以轻松地调整它。
df['Balance'].plot(kind='hist', figsize=(10,6), title='Customer Balance')
我们可以更改各种参数的默认显示选项,而不是每次手动调整显示选项。
pd.set_option("display.precision", 2)
可能要更改的一些其他选项包括:
pct_change用于计算序列中值的变化百分比。在计算时间序列或元素顺序数组中更改的百分比时,它很有用。
ser= pd.Series([2,4,5,6,72,4,6,72]) ser.pct_change()
我们可能需要根据文本数据(如客户名称)筛选观测值(行)。我已经在数据帧中添加了df_new名称。
df_new[df_new.Names.str.startswith('Mi')]
我们可能需要根据文本数据(如客户名称)筛选观测值(行)。我已经在数据帧中添加了df_new名称。
我们可以通过使用返回 Style 对象的 Style 属性来实现此目的,它提供了许多用于格式化和显示数据框的选项。例如,我们可以突出显示最小值或最大值。
它还允许应用自定义样式函数。
df_new.style.highlight_max(axis=0, color='darkgreen')
以上が30 の Python 関数がデータ処理タスクの 99% を解決します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。