Pandas DataFrame详解

Pandas DataFrame详解

Pandas DataFrame是二维大小可变的、可能是异构的表格数据结构,带有标记的轴(行和列)。数据帧是一个二维数据结构,i.e。,数据以表格的方式按行和列对齐。Pandas DataFrame由三个主要组件组成:数据、行和列。

Pandas DataFrame详解

我们将对所有这些基本操作有一个简单的了解,这些操作可以在Pandas DataFrame上执行:

  • 创建一个DataFrame
  • 处理行和列
  • 索引和选择数据
  • 处理缺失的数据
  • 遍历行和列

创建Pandas DataFrame

在现实世界中,Pandas DataFrame将通过从现有存储中加载数据集来创建,存储可以是SQL数据库、CSV文件和Excel文件。Pandas DataFrame可以从列表、字典和字典列表等创建。数据框架可以通过不同的方式创建,以下是创建数据框架的几种方式:

使用列表创建数据框架:可以使用单个列表或列表的列表创建数据框架。

# import pandas as pd
import pandas as pd

# list of strings
lst = ['Geeks', 'For', 'Geeks', 'is', 
            'portal', 'for', 'Geeks']

# Calling DataFrame constructor on list
df = pd.DataFrame(lst)
print(df)

输出:

Pandas DataFrame详解

从ndarray/lists的字典中创建DataFrame:要从narray/list的字典中创建DataFrame,所有narray的长度必须相同。如果传递了index,那么长度索引应该等于数组的长度。如果没有传递索引,那么默认情况下,index将是range(n),其中n是数组长度。

# Python code demonstrate creating 
# DataFrame from dict narray / lists 
# By default addresses.

import pandas as pd

# intialise data of lists.
data = {'Name':['Tom', 'nick', 'krish', 'jack'],
        'Age':[20, 21, 19, 18]}

# Create DataFrame
df = pd.DataFrame(data)

# Print the output.
print(df)

输出:

Pandas DataFrame详解

处理行和列

数据帧是一个二维数据结构,i.e。,数据以表格的方式按行和列对齐。我们可以对行/列执行基本操作,如选择、删除、添加和重命名。

列选择:

为了在Pandas DataFrame中选择一个列,我们可以通过调用列的名称来访问这些列。

# Import pandas package
import pandas as pd

# Define a dictionary containing employee data
data = {'Name':['Jai', 'Princi', 'Gaurav', 'Anuj'],
        'Age':[27, 24, 22, 32],
        'Address':['Delhi', 'Kanpur', 'Allahabad', 'Kannauj'],
        'Qualification':['Msc', 'MA', 'MCA', 'Phd']}

# Convert the dictionary into DataFrame 
df = pd.DataFrame(data)

# select two columns
print(df[['Name', 'Qualification']])

输出:

Pandas DataFrame详解

行选择:

Pandas提供了一种从数据帧检索行的独特方法。DataFrame.loc[]方法用于从Pandas DataFrame中检索行。还可以通过将整数位置传递给iloc[]函数来选择行。

注意:我们将在下面的例子中使用nba.csv文件。

# importing pandas package
import pandas as pd

# making data frame from csv file
data = pd.read_csv("nba.csv", index_col ="Name")

# retrieving row by loc method
first = data.loc["Avery Bradley"]
second = data.loc["R.J. Hunter"]


print(first, "\n\n\n", second)

输出:

如输出图像所示,返回了两个系列,因为两个时间都只有一个参数。

Pandas DataFrame详解

索引和选择数据

pandas中的索引意味着只需要从DataFrame中选择特定的数据行和列。索引可能意味着选择所有行和一些列,一些行和所有列,或者每个行和列中的一些。索引也可以称为子集选择。

使用索引操作符[]对数据帧进行索引:

索引操作符用于引用对象后面的方括号。.loc和.iloc索引器也使用索引操作符进行选择。在这个索引操作符中引用df[]。

选择单个列

为了选择一个列,我们只需将列的名称放在括号中

# importing pandas package
import pandas as pd

# making data frame from csv file
data = pd.read_csv("nba.csv", index_col ="Name")

# retrieving columns by indexing operator
first = data["Age"]

print(first)

输出:

Pandas DataFrame详解

这个函数根据行和列的标签选择数据。df.loc索引器选择数据的方式与索引操作符不同。它可以选择行或列的子集。它还可以同时选择行和列的子集。

选择单行

为了使用.loc[]选择单行,我们在.loc函数中放入了一个单行标签。

# importing pandas package
import pandas as pd

# making data frame from csv file
data = pd.read_csv("nba.csv", index_col ="Name")

# retrieving row by loc method
first = data.loc["Avery Bradley"]
second = data.loc["R.J. Hunter"]


print(first, "\n\n\n", second)

输出:

如输出图像所示,返回了两个系列,因为两个时间都只有一个参数。

Pandas DataFrame详解

索引DataFrame使用.iloc[]:

这个函数允许我们按位置检索行和列。为了做到这一点,我们需要指定我们想要的行的位置,以及我们想要的列的位置。df.iloc索引器非常类似于df.loc,但只使用整数位置来进行选择。

选择单行

为了使用.iloc[]选择单个行,可以将单个整数传递给.iloc[]函数。

import pandas as pd

# making data frame from csv file
data = pd.read_csv("nba.csv", index_col ="Name")
# retrieving rows by iloc method 
row2 = data.iloc[3] 
print(row2)

输出:

Pandas DataFrame详解

处理缺失的数据

当一个或多个项目或整个单元没有提供信息时,可能会出现数据缺失。在现实生活中,数据缺失是一个非常大的问题。丢失的数据也可以称为NA(不可用)值在Pandas。

使用isnull()和notnull()检查缺失的值:
为了检查Pandas DataFrame中缺失的值,我们使用了一个函数isnull()和notnull()。这两个函数都有助于检查值是否为NaN。这些函数还可以在Pandas Series中使用,以便在系列中找到空值。

# importing pandas as pd
import pandas as pd

# importing numpy as np
import numpy as np

# dictionary of lists
dict = {'First Score':[100, 90, np.nan, 95],
        'Second Score': [30, 45, 56, np.nan],
        'Third Score':[np.nan, 40, 80, 98]}

# creating a dataframe from list
df = pd.DataFrame(dict)

# using isnull() function  
df.isnull()

输出:

Pandas DataFrame详解

使用fillna(), replace()和interpolate()来填充缺失的值:

为了填充数据集中的空值,我们使用fillna(), replace()和interpolate()函数,这些函数用它们自己的值替换NaN值。所有这些函数都有助于在DataFrame的数据集中填充空值。Interpolate()函数主要用于填充数据帧中的NA值,但它使用各种插值技术来填充缺失的值,而不是硬编码值。

# importing pandas as pd
import pandas as pd

# importing numpy as np
import numpy as np

# dictionary of lists
dict = {'First Score':[100, 90, np.nan, 95],
        'Second Score': [30, 45, 56, np.nan],
        'Third Score':[np.nan, 40, 80, 98]}

# creating a dataframe from dictionary
df = pd.DataFrame(dict)

# filling missing value using fillna()  
df.fillna(0)

输出:

Pandas DataFrame详解

使用dropna()删除缺失值:

为了从数据框架中删除空值,我们使用dropna()函数,该函数以不同的方式删除具有空值的数据集的行/列。

# importing pandas as pd
import pandas as pd

# importing numpy as np
import numpy as np

# dictionary of lists
dict = {'First Score':[100, 90, np.nan, 95],
        'Second Score': [30, np.nan, 45, 56],
        'Third Score':[52, 40, 80, 98],
        'Fourth Score':[np.nan, np.nan, np.nan, 65]}

# creating a dataframe from dictionary
df = pd.DataFrame(dict)

df

Pandas DataFrame详解

现在我们删除至少有一个Nan值(Null值)的行

# importing pandas as pd
import pandas as pd

# importing numpy as np
import numpy as np

# dictionary of lists
dict = {'First Score':[100, 90, np.nan, 95],
        'Second Score': [30, np.nan, 45, 56],
        'Third Score':[52, 40, 80, 98],
        'Fourth Score':[np.nan, np.nan, np.nan, 65]}

# creating a dataframe from dictionary
df = pd.DataFrame(dict)

# using dropna() function  
df.dropna()

输出:

Pandas DataFrame详解

遍历行和列

迭代是一个通用术语,指的是一个接一个地获取某项内容。Pandas DataFrame由行和列组成,所以为了遍历数据框架,我们必须像字典一样遍历数据框架。

遍历行:

为了对行进行迭代,可以使用三个函数iteritem()、iterrows()和itertuples()。这三个函数将有助于对行进行迭代。

# importing pandas as pd
import pandas as pd

# dictionary of lists
dict = {'name':["aparna", "pankaj", "sudhir", "Geeku"],
        'degree': ["MBA", "BCA", "M.Tech", "MBA"],
        'score':[90, 40, 80, 98]}

# creating a dataframe from a dictionary 
df = pd.DataFrame(dict)

print(df)

Pandas DataFrame详解

现在我们应用iterrows()函数来获取行中的每个元素。

# importing pandas as pd
import pandas as pd

# dictionary of lists
dict = {'name':["aparna", "pankaj", "sudhir", "Geeku"],
        'degree': ["MBA", "BCA", "M.Tech", "MBA"],
        'score':[90, 40, 80, 98]}

# creating a dataframe from a dictionary 
df = pd.DataFrame(dict)

# iterating over rows using iterrows() function 
for i, j in df.iterrows():
    print(i, j)
    print()


输出:

Pandas DataFrame详解

遍历列:

为了遍历列,我们需要创建一个数据框架列列表,然后遍历该列表以提取数据框架列。

# importing pandas as pd
import pandas as pd

# dictionary of lists
dict = {'name':["aparna", "pankaj", "sudhir", "Geeku"],
        'degree': ["MBA", "BCA", "M.Tech", "MBA"],
        'score':[90, 40, 80, 98]}

# creating a dataframe from a dictionary 
df = pd.DataFrame(dict)

print(df)


Pandas DataFrame详解

现在我们遍历列,为了遍历列,我们首先创建一个dataframe列的列表,然后遍历list。

# creating a list of dataframe columns
columns = list(df)

for i in columns:

    # printing the third element of the column
    print (df[i][2])


输出:

Pandas DataFrame详解

DataFrame方法:

Function Description
index () 方法返回DataFrame的索引(行标签)
insert () 方法将列插入DataFrame中
add() 方法返回dataframe和其他元素的相加(二进制操作符相加)。
sub() 方法返回数据框架和其他元素(二元运算符子)的减法。
mul() 方法返回数据帧与其他元素(二元运算符mul)的乘法。
div() 方法返回数据框架和其他元素的浮点除法(二元运算符truediv)。
unique() 方法提取数据框架中的唯一值
nunique () 方法返回数据框架中唯一值的计数
value_counts () 方法计算每个惟一值在Series中出现的次数
columns() 方法返回DataFrame的列标签
axes() 方法返回一个表示DataFrame轴的列表
isnull () 方法创建一个布尔序列,用于提取具有空值的行
notnull () 方法创建一个布尔序列,用于提取具有非空值的行
between() 方法提取列值处于预定义范围之间的行
isin() 方法从预定义集合中存在列值的DataFrame中提取行
dtypes () 方法返回具有每个列的数据类型的Series。结果的索引是原始DataFrame的列
astype () 方法转换Series中的数据类型
values() 方法返回DataFrame i.e的Numpy表示形式。只有DataFrame中的值会被返回,轴标签会被移除
sort_values()- Set1, Set2 方法按传递的列的升序或降序对数据帧进行排序
sort_index () 方法根据数据帧的索引位置或标签(而不是值)对数据帧中的值进行排序,但有时数据帧由两个或多个数据帧组成,因此可以使用此方法更改以后的索引
loc[] 方法根据索引标签检索行
iloc[] 方法根据索引位置检索行
ix[] 方法根据索引标签或索引位置检索DataFrame行。这个方法结合了.loc[]和.iloc[]方法的最佳特性
rename() 方法在DataFrame上调用,以更改索引标签或列名
columns() 方法是更改列名的替代属性
drop() 方法用于从DataFrame中删除行或列
pop() 方法用于从DataFrame中删除行或列
sample() 方法从DataFrame中取出行或列的随机样本
nsmallest () 方法提取列中值最小的行
nlargest () 方法提取列中值最大的行
shape() 方法返回表示DataFrame维度的元组
ndim() 方法返回一个“int”,表示轴/数组维度的数量。
如果Series返回1,否则如果DataFrame返回2
dropna () 方法允许用户以不同的方式分析和删除具有Null值的行/列
fillna () 方法管理并让用户用自己的值替换NaN值
rank() 使用此方法可以对Series中的值进行排序
query() 方法是从DataFrame中提取子集的另一种基于字符串的语法
copy() 方法创建pandas对象的独立副本
copy() 方法创建布尔序列,并使用它提取具有重复值的行
drop_duplicates () 方法是标识重复行并通过过滤删除它们的替代选项
set_index () 方法使用一个或多个现有列设置DataFrame索引(行标签)
reset_index () 方法重置数据帧的索引。此方法将从0到数据长度的整数列表设置为索引
where() 方法用于检查数据帧中的一个或多个条件,并相应地返回结果。默认情况下,不满足条件的行填充NaN值

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程