📜  使用 Pandas 操作数据帧 – Python

📅  最后修改于: 2022-05-13 01:55:29.318000             🧑  作者: Mango

使用 Pandas 操作数据帧 – Python

在使用 Pandas 操作数据框之前,我们必须了解什么是数据操作。现实世界中的数据是非常令人不快和无序的,因此通过执行某些操作,我们可以根据自己的要求使数据易于理解,这种将无序数据转换为有意义信息的过程可以通过数据操作来完成。

在这里,我们将学习如何使用 Pandas 操作数据帧。 Pandas 是一个开源库,用于从数据操作到数据分析,是非常强大、灵活且易于使用的工具,可以使用 import pandas as pd 进行导入。 Pandas 主要处理一维和二维数组中的数据;虽然,pandas 处理这两者的方式不同。在 Pandas 中,一维数组被表示为一个系列,而数据帧只是一个二维数组。这里使用的数据集是 country_code.csv。

以下是用于操作数据框的各种操作:

  • 首先,导入用于数据操作的库,即pandas,然后分配并读取数据帧:
Python3
# import module
import pandas as pd
 
# assign dataset
df = pd.read_csv("country_code.csv")
 
# display
print("Type-", type(df))
df


Python3
df.head(10)


Python3
df.shape


Python3
df.describe()


Python3
df.dropna()


Python3
df.dropna(axis=1)


Python3
df1 = pd.read_csv("country_code.csv")
merged_col = pd.merge(df, df1, on='Name')
merged_col


Python3
country_code = df.rename(columns={'Name': 'CountryName',
                                  'Code': 'CountryCode'},
                         inplace=False)
country_code


Python3
student = pd.DataFrame({'Name': ['Rohan', 'Rahul', 'Gaurav',
                                 'Ananya', 'Vinay', 'Rohan',
                                 'Vivek', 'Vinay'],
                         
                        'Score': [76, 69, 70, 88, 79, 64, 62, 57]})
 
# Reading Dataframe
student


Python3
student.sort_values(by=['Score'], ascending=True)


Python3
student.sort_values(by=['Name', 'Score'],
                    ascending=[True, False])


Python3
student['Percentage'] = (student['Score'] / student['Score'].sum()) * 100
student


Python3
# Selecting rows where score is
# greater than 70
print(student[student.Score>70])
 
# Selecting rows where score is greater than 60
# OR less than 70
print(student[(student.Score>60) | (student.Score<70)])


Python3
# Printing five rows with name column only
# i.e. printing first 5 student names.
print(student.loc[0:4, 'Name'])
 
# Printing all the rows with score column
# only i.e. printing score of all the
# students
print(student.loc[:, 'Score'])
 
# Printing only first rows having name,
# score columns i.e. print first student
# name & their score.
print(student.iloc[0, 0:2])
 
# Printing first 3 rows having name,score &
# percentage columns i.e. printing first three
# student name,score & percentage.
print(student.iloc[0:3, 0:3])
 
# Printing all rows having name & score
# columns i.e. printing all student
# name & their score.
print(student.iloc[:, 0:2])


Python3
# explicit function
def double(a):
    return 2*a
 
student['Score'] = student['Score'].apply(double)
 
# Reading Dataframe
student


输出:



  • 我们可以使用head()函数读取数据帧,该函数也有一个参数 (n),即要显示的行数。

蟒蛇3

df.head(10)

输出:

  • 使用shape()计算 DataFrame 中的行和列它返回编号。包含在元组中的行和列。

蟒蛇3

df.shape

输出:



  • 使用describe()方法的 DataFrame 统计摘要。

蟒蛇3

df.describe()

输出:

  • 删除 DataFrame 中的缺失值,可以使用dropna()方法完成,它删除数据框中的所有 NaN 值。

蟒蛇3

df.dropna()

输出:



另一个例子是:

蟒蛇3

df.dropna(axis=1)


这将删除具有任何缺失值的所有列。

输出:

  • 使用merge() 合并数据帧,传递的参数是要与列名称合并的数据帧。

蟒蛇3

df1 = pd.read_csv("country_code.csv")
merged_col = pd.merge(df, df1, on='Name')
merged_col

输出:

  • 另一个参数 'on' 是公共列的名称,这里的 'Name' 是提供给 merge()函数的公共列。 df 是第一个数据帧,df1 是要合并的第二个数据帧。
  • 使用rename() 重命名数据帧的列,传递的参数是要重命名和就地的列。

蟒蛇3



country_code = df.rename(columns={'Name': 'CountryName',
                                  'Code': 'CountryCode'},
                         inplace=False)
country_code

输出:

代码 'inplace = False' 意味着结果将存储在一个新的 DataFrame 而不是原来的 DataFrame 中。

  • 手动创建数据框:

蟒蛇3

student = pd.DataFrame({'Name': ['Rohan', 'Rahul', 'Gaurav',
                                 'Ananya', 'Vinay', 'Rohan',
                                 'Vivek', 'Vinay'],
                         
                        'Score': [76, 69, 70, 88, 79, 64, 62, 57]})
 
# Reading Dataframe
student

输出:

  • 使用sort_values()方法对 DataFrame 进行排序。

蟒蛇3

student.sort_values(by=['Score'], ascending=True)

输出:

  • 使用多列对 DataFrame 进行排序:

蟒蛇3



student.sort_values(by=['Name', 'Score'],
                    ascending=[True, False])

输出:

  • 在 DataFrame 中创建另一列,这里我们将创建列名百分比,它将使用聚合函数sum() 计算学生分数的百分比。

蟒蛇3

student['Percentage'] = (student['Score'] / student['Score'].sum()) * 100
student

输出:

  • 使用逻辑运算符选择 DataFrame 行:

蟒蛇3

# Selecting rows where score is
# greater than 70
print(student[student.Score>70])
 
# Selecting rows where score is greater than 60
# OR less than 70
print(student[(student.Score>60) | (student.Score<70)])

输出:

  • 索引和切片:

这里.loc是标签库, .iloc是用于数据切片和索引的基于整数位置的方法。



蟒蛇3

# Printing five rows with name column only
# i.e. printing first 5 student names.
print(student.loc[0:4, 'Name'])
 
# Printing all the rows with score column
# only i.e. printing score of all the
# students
print(student.loc[:, 'Score'])
 
# Printing only first rows having name,
# score columns i.e. print first student
# name & their score.
print(student.iloc[0, 0:2])
 
# Printing first 3 rows having name,score &
# percentage columns i.e. printing first three
# student name,score & percentage.
print(student.iloc[0:3, 0:3])
 
# Printing all rows having name & score
# columns i.e. printing all student
# name & their score.
print(student.iloc[:, 0:2])

输出:

.loc:

.iloc:

  • 应用功能,此函数用于数据帧沿的轴线应用一个函数可以不管它排(轴= 0)或柱(轴= 1)。

蟒蛇3

# explicit function
def double(a):
    return 2*a
 
student['Score'] = student['Score'].apply(double)
 
# Reading Dataframe
student

输出: