掌握熊猫:练习的综合指南
#python #datascience #pandas #100daysofdatascience

100天的第5天数据科学训练营从NOOB到专家。

github链接:Complete-Data-Science-Bootcamp

主要帖子:Complete-Data-Science-Bootcamp

回顾第4天

昨天我们已经详细研究了有关python的numpy。

开始吧

pandas是Python中强大的数据分析和操纵库。它使您可以轻松地访问,选择和操纵数据集中的数据。在这篇文章中,您将学习如何使用大熊猫创建一本跟踪学生成绩的成绩。您将学习如何从CSV文件中读取数据,操纵数据并创建成绩报告。您还将学习如何处理丢失值并准备数据以进行可视化。在本课程结束时,您将能够有效地使用PANDA来管理和分析您的数据。

假设我们有一个名为“ Grades.csv”的CSV文件中的学生成绩数据集。用大熊猫探索此数据集的第一步是将其读取为PANDAS DataFrame。我们可以使用READ_CSV()函数来做到这一点:

import pandas as pd

df = pd.read_csv('grades.csv')
df
名称 等级
0 约翰 89.0
1 玛丽 95.0
2 艾米丽 77.0
3 迈克尔 82.0
4 Rachel in
  • 现在我们有了数据框,我们可以开始探索数据。假设我们想访问特定学生的成绩。我们可以通过选择学生的行,然后选择“等级”列来做到这一点:
student_name = 'John'
grade = df[df['name'] == student_name]['grade']
print(grade)

0 89.0名称:等级,dtype:float64

  • 我们还可以使用“ []'运算符:
grades = df['grade']
print(grades)

0 89.0 1 95.0 2 77.0 3 82.0 4 nan名称:等级,dtype:float64

  • 如果要选择多个列,我们可以将列标签列表传递给“ []”运算符:
student_info = df[['name', 'grade']]
print(student_info)

名称等级0约翰89.0 1玛丽95.0 2艾米丽77.0 3迈克尔82.0 4雷切尔·南

  • 现在,假设我们的数据集中有一些丢失的值。我们可以使用fillna()函数处理这些缺失值:
df = df.fillna(-1)
df
名称 等级
0 约翰 89.0
1 玛丽 95.0
2 艾米丽 77.0
3 迈克尔 82.0
4 Rachel -1.0

这将用-1代替所有缺失值。

这是熊猫的基本概述。现在,我们将深入研究它。

1.数据中的导入和阅读:

  • 从各种来源(例如CSV文件)中读取数据:
import pandas as pd
df = pd.read_csv('people_data.csv')
df
#Or a Excel file:

# df = pd.read_excel('data.xlsx')
名称 年龄 性别
0 约翰 20 男性
1 jane 30 女性
2 鲍勃 40 男性
3 爱丽丝 50 女性

2.检查数据:

在熊猫数据框架中拥有数据后,您可以使用各种方法对其进行检查。

例如,您可以使用head()方法查看数据的前几行:

df.head()
名称 年龄 性别
0 约翰 20 男性
1 jane 30 女性
2 鲍勃 40 男性
3 爱丽丝 50 女性

您还可以使用info()方法查看列的名称和数据类型:

df.info()

rangeIndex:4个条目,0到3个数据列(总计3列):#列nonnon nor-null count dtype ------------------------------------------------------ -----------------------0名称4非零对象1年龄4非无效INT64 2性别4非零对象dtypes:int64(1),对象(2)内存用法:224.0+字节

3.选择数据:

您可以使用[]操作员或lociloc属性选择特定的列或数据行。

例如,要选择“名称”和“年龄”列,您可以使用以下代码:

df[['Name', 'Age']]
名称 年龄
0 约翰 20
1 jane 30
2 鲍勃 40
3 爱丽丝 50

要在特定列中选择具有特定值的行,您可以使用loc属性:

df.loc[df['Gender'] == 'Female']
名称 年龄 性别
1 jane 30 女性
3 爱丽丝 50 女性

4.操纵数据:

您可以使用各种方法在Pandas DataFrame中操纵数据。

例如,您可以通过将值分配给新列名来添加新列:

df['County'] = ["India", "USA", "India", "Canada"]
df
名称 年龄 性别
0 约翰 20 男性 印度
1 jane 30 女性 美国
2 鲍勃 40 男性 印度
3 爱丽丝 50 女性 加拿大

您还可以使用drop()方法删除列或行:

newdf = df.drop('County', axis=1)  # drop a column
newdf
名称 年龄 性别
0 约翰 20 男性
1 jane 30 女性
2 鲍勃 40 男性
3 爱丽丝 50 女性
newdf1 = df.drop(df[df['Age'] < 35].index, inplace=True)  # drop rows with Age < 18
df
名称 年龄 性别
2 鲍勃 40 男性 印度
3 爱丽丝 50 女性 加拿大

5.分组和汇总数据:

您可以通过特定值分组数据,并使用groupby()方法和apply()函数应用聚合函数:

import numpy as np
groupdf = df.groupby('Gender')['Age'].apply(np.mean)  # group by Gender and calculate mean Age
groupdf

性别女性50.0男性40.0名称:年龄,dtype:float64

6.合并和加入数据:

您可以使用merge()函数或concat()函数合并或加入来自多个数据帧的数据。

例如,要基于公共列合并两个数据范围,您可以使用以下代码:

df1 = pd.DataFrame({'key': ['K0', 'K1', 'K2', 'K3'],
                    'A': ['A0', 'A1', 'A2', 'A3'],
                    'B': ['B0', 'B1', 'B2', 'B3']})
df1
a b
0 K0 A0 B0
1 k1 A1 B1
2 k2 A2 B2
3 k3 A3 B3
df2 = pd.DataFrame({'key': ['K0', 'K1', 'K2', 'K3'],
                    'C': ['C0', 'C1', 'C2', 'C3'],
                    'D': ['D0', 'D1', 'D2', 'D3']})
df2
c d
0 K0 C0 D0
1 k1 C1 D1
2 k2 C2 D2
3 k3 C3 D3
merged_df = pd.merge(df1, df2, on='key')
merged_df
a b c d
0 K0 A0 B0 C0 D0
1 k1 A1 B1 C1 D1
2 k2 A2 B2 C2 D2
3 k3 A3 B3 C3 D3

要水平串联数据(即添加列),您可以使用concat()函数:

concat_df = pd.concat([df1, df2], axis=1)
concat_df
a b c d
0 K0 A0 B0 K0 C0 D0
1 k1 A1 B1 k1 C1 D1
2 k2 A2 B2 k2 C2 D2
3 k3 A3 B3 k3 C3 D3

7.处理丢失的数据:

在现实世界数据集中遇到丢失的数据是常见的。 Pandas提供了处理缺失数据的各种方法,例如用特定值填充缺失值或丢失值的行。

要用特定值填充缺失值,您可以使用fillna()方法:

data = {'Name': ['John', 'Jane', 'Bob', 'Alice'],
        'Age': [20, 30, 40, np.nan],
        'Gender': ['Male', 'Female', 'Male', 'Female']}
df = pd.DataFrame(data)
df
名称 年龄 性别
0 约翰 20.0 男性
1 jane 30.0 女性
2 鲍勃 40.0 男性
3 爱丽丝 in 女性
df['Age'].fillna(value='22', inplace=True)
df
名称 年龄 性别
0 约翰 20.0 男性
1 jane 30.0 女性
2 鲍勃 40.0 男性
3 爱丽丝 22 女性

要丢失缺少值的行,您可以使用dropna()方法:

df.dropna(inplace=True)

8.与日期和时间合作:

pandas具有内置的支持,以与日期和时间合作。

您可以使用to_datetime()函数将字符串列转换为DateTime对象:

df['Date'] = pd.to_datetime(df['Date'])

您可以使用dt属性提取日期时间的特定部分,例如年度或月份:

df['Year'] = df['Date'].dt.year
df['Month'] = df['Date'].dt.month

9.高级操作:

您可以使用PANDAS执行更多的高级操作,例如枢轴表,时间序列分析和机器学习。这里还有一些代码段,可以帮助您探索这些主题:

要创建一个枢轴表,您可以使用pivot_table()函数:

pivot_table = df.pivot_table(index='Column1', columns='Column2', values='Column3', aggfunc=np.mean)

要执行时间序列分析,您可以使用resample()方法以不同的频率重新采样数据:

resampled_df = df.resample('D').mean()  # resample to daily frequency

9.可视化数据:

您可以使用plot()方法来创建各种类型的图,例如条图,散点图和线图:

df.plot(x='X Column', y='Y Column', kind='scatter')  # scatter plot
df.plot(x='X Column', y='Y Column', kind='bar')  # bar plot
df.plot(x='X Column', y='Y Column')  # line plot

结论,熊猫是Python中用于数据操作和分析的功能强大且通用的库。 Pandas凭借其广泛的内置功能和方法,使使用各种数据源,执行复杂的数据操作并可视化结果变得容易。无论您是初学者还是经验丰富的数据科学家,Pandas都是任何与数据相关的项目的重要工具。

练习问题,您将在Github的第5天的练习笔记本中找到。

如果您喜欢它,然后...

Buy Me A Coffee