# apply()

ডাটাফ্রেমের বা সিরিজের প্রতিটি আইটেম ধরে কোনো কাজ করার দরকার হলে apply() মেথড নিয়ে কাজ করতে হয়।

**বোঝার জন্য নিচের উদাহরণটি দেখি**

```python
import pandas as pd

# Create a sample DataFrame
data = {
    'Name': ['John', 'Alice', 'Bob', 'Jane'],
    'Exam1': [80, 90, 75, 85],
    'Exam2': [70, 85, 80, 95],
    'Exam3': [90, 80, 85, 70]
}

df = pd.DataFrame(data)
```

**ডাটাফ্রেমটি দেখতে নিচের মত**

<figure><img src="https://517141686-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FPsBp4dN4Xe8LcTjaW2On%2Fuploads%2FOGEh8cs1KRMcGY9V5mfC%2Fimage.png?alt=media&#x26;token=4866e31f-f968-499c-800f-c77260344a40" alt=""><figcaption></figcaption></figure>

আমি চাচ্ছি ডাটাফ্রেমের প্রতিটা এলিমেন্ট কে ২ দ্বারা গুন করতে

```python
# Apply a function to every element in the DataFrame
df_applied = df.apply(lambda x:x*2)
```

**df\_applied ডাটাফ্রেমটি এখন নিচের মত ডেটা বহন করে**

<div align="left"><figure><img src="https://517141686-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FPsBp4dN4Xe8LcTjaW2On%2Fuploads%2Fj1BgfuqIxBcYOtSXY3hA%2Fimage.png?alt=media&#x26;token=fed4f20d-2ebb-4fd6-969d-adfa7e799ce8" alt=""><figcaption></figcaption></figure></div>

### প্রত্যেকটি রো অনুযায়ী কাজ করা

```python
import pandas as pd

# Create a sample DataFrame
data = {
    'Name': ['John', 'Alice', 'Bob', 'Jane'],
    'Bangla': [80, 90, 75, 85],
    'English': [70, 85, 80, 95],
    'Math': [90, 80, 85, 70]
}

df = pd.DataFrame(data)
```

**ডাটাফ্রেমটি দেখতে নিচের মত**

<div align="left"><figure><img src="https://517141686-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FPsBp4dN4Xe8LcTjaW2On%2Fuploads%2F1ow70O6D2kLbkcM0QmpJ%2Fimage.png?alt=media&#x26;token=7e96ff1e-b290-4ca3-9897-ea523b6ed94a" alt=""><figcaption></figcaption></figure></div>

আমি চাচ্ছি একটা নতুন কলাম তৈরী করতে total নামে। প্রত্যেকটা রো এর তিনটি কলাম ('bangla','english','math' ) এর যোগফল total নামে কলামে বসবে

```python
df['Total'] = df.apply(lambda row : row[['Bangla','English','Math']].sum(),axis=1)
```

**ডাটাফ্রেমটি এখন নিচের মত ডেটা বহন করে**

<div align="left"><figure><img src="https://517141686-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FPsBp4dN4Xe8LcTjaW2On%2Fuploads%2FuIk1XPjiyQyKvZZ7UbRj%2Fimage.png?alt=media&#x26;token=64f52852-a224-4ad0-8c7d-4ff29784d125" alt=""><figcaption></figcaption></figure></div>

এখানে একটি প্যারামিটার নিয়েছি axis = ১ এর মানে প্রত্যেকটি রো ধরে ধরে কাজ করবে। যদি ০ দিতাম তাহলে কলাম ধরে কাজ করতো।

## apply() axis প্রাকটিক্যাল

#### যদি সব গুলো ডেটা নাম্বার হয়

```python
import pandas as pd

# Create a sample DataFrame with string columns
data = {
    'A': ['1', '2', '3'],
    'B': ['4', '5', '6'],
    'C': ['7', '8', '9']
}

df = pd.DataFrame(data)

# Convert string columns to numeric data types
df = df.astype(int)

# Sum row-wise using apply() and axis=1
df_row_sum = df.apply(lambda row: row.sum(), axis=1)
print("Row-wise sum:\n", df_row_sum)

# Sum column-wise using apply() and axis=0
df_column_sum = df.apply(lambda column: column.sum(), axis=0)
print("\nColumn-wise sum:\n", df_column_sum)
```

**Output:**

<figure><img src="https://517141686-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FPsBp4dN4Xe8LcTjaW2On%2Fuploads%2F7NHFC1eqGDlpSvY4bW7H%2Fimage.png?alt=media&#x26;token=8f5e5a37-b0ea-4196-81db-5c4366ce618d" alt=""><figcaption></figcaption></figure>

#### যদি সব গুলো ডেটা নাম্বার না হয়

<pre class="language-python"><code class="lang-python">import pandas as pd

# Create a sample DataFrame
data = {
    'Name': ['John', 'Alice', 'Bob', 'Jane'],
    'Bangla': [80, 90, 75, 85],
    'English': [70, 85, 80, 95],
    'Math': [90, 80, 85, 70]
}

df = pd.DataFrame(data)
<strong># Row Wise
</strong><strong>total_row = df.apply(lambda row:row[['Bangla','English','Math']].sum(),axis=1)
</strong>total_row
# Column Wise
total_column = df.apply(lambda column:column[[1,2,3]].sum(),axis=0)
total_column
</code></pre>

**Output:**

<figure><img src="https://517141686-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FPsBp4dN4Xe8LcTjaW2On%2Fuploads%2FnUtaPhiZwfYxo4TUyn9c%2Fimage.png?alt=media&#x26;token=b45d081a-5ce5-448d-92d6-aefaa3d661ad" alt=""><figcaption></figcaption></figure>
