Pandas 教程之二: Pandas DataFrame

Pandas DataFrame 是二维大小可变、可能异构的表格数据结构,带有标记轴(行和列)。数据框是一种二维数据结构,即数据以表格形式按行和列排列。Pandas DataFrame 由三​​个主要组件组成,即 数据、 和 

Pandas 数据框

创建 Pandas DataFrame

Pandas DataFrame 将通过从现有存储中加载数据集来创建,存储可以是 SQL 数据库、CSV 文件和 Excel 文件。Pandas DataFrame 可以从列表、字典以及字典列表等中创建。

以下是我们创建数据框的

一些方法:使用列表创建数据框: 可以使用
 

单个列表或列表列表创建数据框。

Python
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)

输出:


输出


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

Python
# 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)


输出:

 


处理行和列
 

数据框是一种二维数据结构,即数据以行和列的形式排列。我们可以对行/列执行基本操作,如选择、删除、添加和重命名。

Python
# 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 提供了一种独特的方法来从数据框中检索行。 方法用于从 Pandas DataFrame 中检索行。还可以通过将整数位置传递给 iloc[] 函数来选择行。注意: 我们将 在下面的示例中使用文件。DataFrame.loc[]
 

Python
# 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 进行索引 

索引运算符用于引用对象后面的方括号。  和  索引器也使用索引运算符进行选择。在此索引运算符中引用

选择单列

为了选择单个列,我们只需将列的名称放在括号之间

Python
# 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)


输出:

使用以下方法索引 DataFrame   :.loc[ ]

此函数通过  行和列的 标签选择数据。 索引器选择数据的方式与索引运算符不同。它可以选择行或列的子集。它还可以同时选择行和列的子集。df.loc

选择一行

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

Python
# 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)

输出:
如输出图所示,由于两次都只有一个参数,因此返回了两个系列。

使用以下方法索引 DataFrame:.iloc[ ]

此函数允许我们按位置检索行和列。为此,我们需要指定所需行的位置以及所需列的位置。索引器 df.iloc 与非常相似 df.loc ,但仅使用整数位置进行选择。

选择一行

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

Python
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 中也可以称为 NA(不可用)值。

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

Python
# 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()

输出:

使用、  和 填充缺失值 fillna() replace() interpolate()


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

Python
# 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)

使用删除缺失值 dropna()


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

Python
# 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

输出:

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

Python
# 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 由行和列组成,因此,为了迭代数据框,我们必须像迭代字典一样迭代数据框。

遍历行


为了迭代行,我们可以使用三个函数 iteritems()、  iterrows()、  itertuples() 。这三个函数将有助于迭代行。

Python
# 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)

输出:

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

Python
# 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()


输出:

遍历列


为了迭代列,我们需要创建一个数据框列的列表,然后迭代该列表以提取数据框列。

Python
# 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)


输出:

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

Python
# creating a list of dataframe columns
columns = list(df)
 
for i in columns:
 
    # printing the third element of the column
    print (df[i][2])

输出:

 
 

DataFrame 方法:

功能描述
index()方法返回 DataFrame 的索引(行标签)
insert()方法将一列插入到 DataFrame 中
add()方法返回数据框和其他元素的加法(二元运算符加法)
sub()方法返回数据框和其他元素的减法(二元运算符 sub)
mul()方法返回数据框和其他元素的乘法(二元运算符 mul)
div()方法按元素返回数据框和其他的浮点除法(二元运算符 truediv)
unique()方法提取数据框中的唯一值
nunique()方法返回数据框中唯一值的数量
value_counts()方法计算系列中每个唯一值出现的次数
columns()方法返回 DataFrame 的列标签
axes()方法返回表示 DataFrame 轴的列表
isnull()方法创建一个布尔系列,用于提取具有空值的行
notnull()方法创建一个布尔系列,用于提取具有非空值的行
between()方法提取列值介于预定义范围之间的行
isin()方法从 DataFrame 中提取行,其中列值存在于预定义集合中
dtypes()方法返回一个包含每列数据类型的 Series。结果的索引是原始 DataFrame 的列
astype()方法转换 Series 中的数据类型
values()方法返回 DataFrame 的 Numpy 表示形式,即仅返回 DataFrame 中的值,轴标签将被删除
sort_values()- Set1Set2方法按传递的列的升序或降序对数据框进行排序
sort_index()方法根据 DataFrame 中的值的索引位置或标签(而不是值)对其进行排序,但有时数据框由两个或多个数据框组成,因此以后可以使用此方法更改索引
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()方法允许用户以不同的方式分析和删除具有空值的行/列
fillna()方法管理并让用户用自己的某个值替换 NaN 值
rank()可以使用此方法按顺序排列系列中的值
query()方法是一种基于字符串的替代语法,用于从 DataFrame 中提取子集
copy()方法创建 pandas 对象的独立副本
duplicated()方法创建一个布尔系列并使用它来提取具有重复值的行
drop_duplicates()方法是识别重复行并通过过滤删除它们的另一种选择。
set_index()方法使用一个或多个现有列设置 DataFrame 索引(行标签)
reset_index()方法重置数据框的索引。此方法将范围从 0 到数据长度的整数列表设置为索引
​where()方法用于检查数据框是否符合一个或多个条件并返回相应结果。默认情况下,不满足条件的行将用 NaN 值填充 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

潜洋

你的鼓励是我创作最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值