数据分析变得简单:Python Pandas教程

作者 : IT 大叔 本文共9592个字,预计阅读时间需要24分钟 发布时间: 2020-08-11

数据是我们世界的重要组成部分。实际上,全球数据的90%是在最近3年内创建的。许多科技巨头已经开始雇用数据科学家来分析数据以制定业务决策。数据分析是一种方法,我们收集数据,然后将各种操作(例如规范化,转换,清理等)应用于我们的数据以提取有用的信息。当前,由于大小公司都在寻求这些有价值的技能,因此数据分析的需求量很大。

当前,Python是用于数据分析的最重要的语言,许多行业标准工具都是用Python编写的。Python Pandas是任何有抱负的数据分析人员都需要学习的最基本的需求工具之一。在这篇文章中,我们将向您介绍Pandas的基本知识。

今天我们将结束:

  • 为Python引入熊猫
  • 熊猫数据类型和结构
  • Series:最重要的操作
  • DataFrame:最重要的操作
  • 如何读取和导入熊猫数据
  • 熊猫数据争吵
  • 下一步

开始作为数据分析师的职业生涯。

了解如何使用Python工具执行预测性数据分析。

使用Python进行预测数据分析

为Python引入熊猫

Pandas库是Python数据科学家和分析师最重要和最受欢迎的工具之一,因为它是许多数据项目的基础。Pandas是用于数据清理和数据处理的开源Python软件包。它提供了扩展的,灵活的数据结构来保存不同类型的标记数据和关系数据。最重要的是,它实际上很容易安装和使用。

熊猫通常与其他Python库一起使用。实际上,Pandas是基于NumPy软件包构建的,因此它们之间的许多结构是相似的。在SciPy中,Pandas也用于统计分析,或者与Matplotlib一起用于绘图功能。熊猫可以与文本编辑器或Juptyer Notebooks单独使用,后者是进行更复杂数据建模的理想环境。Pandas适用于大多数Python版本,包括Python3。

可以将Pandas视为数据的存放地,您可以在一处清理,分析和转换数据。熊猫本质上是Excel的更强大替代品。使用熊猫,您可以执行以下操作:

  • 轻松计算有关数据的统计信息,例如查找列的平均值,分布和中位数
  • 使用数据可视化工具(例如Matplotlib)轻松创建绘图条,直方图等
  • 通过按特定条件过滤列或轻松删除值来清理数据
  • 使用合并,联接,重塑等操作灵活地操作数据
  • 读取,写入并将干净数据存储为数据库txt文件或CSV文件

熊猫的流行

据我们了解,Python是用于数据分析的最流行的编程语言,许多流行的机器学习和可视化库都是用Python编写的,包括Pandas,Numpy,TensorFlow,Matplotlib,Scikit-learn等。实际上,Python在2020年StackOverflow调查中排名第4,是最受欢迎的编程语言,它以其简单,易学易懂的曲线以及改进的库支持而倍受青睐。

熊猫是数据分析的重要组成部分。在最受欢迎和最受欢迎的图书馆中,它排名第四。在大多数需要的编程工具中,它也始终保持较高的排名,这肯定表明Pandas是全球开发人员的抢手工具。学习熊猫是成为数据分析师的重要一步。

第一步:安装熊猫

您可以使用内置的Python工具安装Pandas pip并运行以下命令。

$ pip install pandas

数据分析变得简单:Python Pandas教程插图

熊猫数据结构和数据类型

数据类型是像一个内部构建体,其确定Python将如何操纵,使用,或存储数据。在进行数据分析时,使用正确的数据类型以避免错误很重要。熊猫通常会正确推断数据类型,但有时我们需要显式转换数据。让我们来看看Pandas中可用的数据类型,也称为dtypes

  • object:文本或混合数字或非数字值
  • int64:整数
  • bool:正确/错误值
  • float64: 浮点数字
  • category:文本值的有限列表
  • datetime64:日期和时间值
  • timedelta[ns]:两个日期时间之间的差异

一个数据结构是组织我们的数据的特定方式。熊猫有两个数据结构,所有操作都基于这两个对象:

  • Series
  • DataFrame

可以将其视为易于存储和组织的图表,其中“系列”是列,而“数据框架”是由一系列系列组成的表。Series最好地描述为可以存储任何类型数据的二维数组的单列。DataFrame就像一个表,该表类似于使用多个列和行的电子表格来存储数据。DataFrame对象中的每个值都与行索引和列索引关联。

数据分析变得简单:Python Pandas教程插图(2)

Series:最重要的操作

我们可以通过创建系列开始使用Pandas。我们通过调用pd.Series()方法然后传递值列表来创建系列。我们使用print语句打印该系列。熊猫默认情况下将从0开始计算索引。然后,我们明确定义这些值。

series1 = pd.Series([1,2,3,4])
 
print(series1)

让我们看一个更复杂的例子。运行下面的代码。

# importing pandas in our program
import pandas as pd

# Defining a series object
srs = pd.Series([1,2,3,4,5])

# printing series values
print("The Series values are:")
print(srs.values)

# printing series indexes
print("\nThe Index values are:")
print(srs.index.values)

这是如何运作的?好吧,第srs.values9行的函数返回存储在Series对象中的值,srs.index.values第13行的函数返回索引值。

为我们的值分配名称

熊猫会自动生成我们的索引,因此我们需要对其进行定义。每个索引对应于其在Series对象中的值。让我们看一个为人口增长率分配国家名称的示例。

#importing pandas in our program
import pandas as pd

# Defining a series object
srs = pd.Series([11.9, 36.0, 16.6, 21.8, 34.2], index = ['China', 'India', 'USA', 'Brazil', 'Pakistan'])

# Set Series name
srs.name = "Growth Rate"

# Set index name
srs.index.name = "Country"

# printing series values
print("The Indexed Series values are:")
print(srs)

这是如何运作的?Series第8行和第11行使用了该对象的两个属性。该属性srs.name设置我们的系列对象的名称。srs.index.name然后,该属性设置索引的名称。很简单,对吧?

从中选择条目 Series

要从中选择条目Series,我们根据索引名称或索引号选择元素。

import numpy as np
import pandas as pd

srs = pd.Series(np.arange(0, 6, 1), index = ['ind0', 'ind1', 'ind2', 'ind3', 'ind4', 'ind5'])
srs.index.name = "Index"
print("The original Series:\n", srs)

print("\nSeries element at index ind3:")
print(srs['ind3']) # Fetch element at index named ind3

print("\nSeries element at index 3:")
print(srs[3]) # Fetch element at index 3

print("\nSeries elements at multiple indexes:\n")
print(srs[['ind1', 'ind4']]) # Fetch elements at multiple indexes

这是如何运作的?嗯,从中Series选择了3种方式中的元素。

  • 在第9行,根据索引名称选择元素。
  • 在第12行,根据索引号选择元素。请记住,索引号从开始0
  • 在第15行中,Series通过选择中的多个索引名称,从中选择了多个元素[]

从中删除条目 Series

删除索引和不需要的索引是Pandas中的常见功能。如果drop(index_name)使用Series对象上的给定索引调用该函数,则将删除所需的索引名称。

import numpy as np
import pandas as pd

srs = pd.Series(np.arange(0, 6, 1), index = ['ind0', 'ind1', 'ind2', 'ind3', 'ind4', 'ind5'])
srs.index.name = "Index"
print("The original Series:\n", srs)

srs = srs.drop('ind2') # drop index named ind2

print("The New Series:\n", srs)

在此,ind2删除索引的输出。另外,只能通过指定索引名称而不是数字来删除索引。因此,srs.drop(srs[2])不起作用。

很简单,对吧?我们可以将许多其他功能,条件和逻辑运算符应用于我们的series对象,以有效地使用索引。其中一些功能是:

  • 该条件srs[srs == 1.0]将返回一个包含索引的序列对象,该索引的值等于1.0。
  • name : str, optional 给系列起个名字
  • copy : bool, default False 允许我们复制输入的数据
  • notnull() 函数将返回一个系列对象,该系列对象的索引已分配给FalseNaN值或空值),其余索引已分配True
  • 以及更多

有关更多操作和命令,请查看我的Pandas备忘单:前35个命令和操作

DataFrame:最重要的操作

DataFrame在Pandas中有几种制作方法。从头开始创建一个的最简单方法是创建并打印一个df

import pandas as pd
df = pd.DataFrame({
    "Column1": [1, 4, 8, 7, 9],
    "Column2": ['a', 'column', 'with', 'a', 'string'],
    "Column3": [1.23, 23.5, 45.6, 32.1234, 89.453],
    "Column4": [True, False, True, False, True]
})
print(df)

我们还可以创建一个dict并将字典数据传递给DataFrame构造函数。假设我们有一些蔬菜销售数据,并希望按蔬菜类型和数量进行组织。我们的数据如下所示:

data = {
    'peppers': [3, 2, 0, 1], 
    'carrots': [0, 3, 7, 2]
}

现在,我们使用一个简单的命令将其传递给构造函数。

quantity = pd.DataFrame(data)
 
quantity

怎么运作的? 好吧,我们中的每个项目或值data都将与我们在DataFrame中创建的一列相对应,就像图表一样。该DataFrame的索引以数字形式列出,但是我们可以根据需要进一步指定它们。假设我们想知道每月的数量。那将是我们的新索引。我们使用以下命令执行此操作。

quantity = pd.DataFrame(data, index=['June', 'July', 'August', 'September'])
 
quantity

获取有关您的数据的信息

加载数据后运行的第一个命令之一是.info(),它提供有关数据集的所有基本信息。

import pandas as pd
df = pd.DataFrame({
    "Column1": [1, 4, 8, 7, 9],
    "Column2": ['a', 'column', 'with', 'a', 'string'],
    "Column3": [1.23, 23.5, 45.6, 32.1234, 89.453],
    "Column4": [True, False, True, False, True]
})
df.info()

由此,您可以使用其他操作访问更多信息,例如.shape,它输出(行,列)元组。这对于告诉我们数据的大小特别有用,尤其是在清理数据之后。这样,我们可以知道删除了什么。

我们还可以打印数据集的列名以查找错别字或格式不一致的地方。我们使用.columns运算符来执行此操作。然后,您可以轻松地重命名列。最重要的是,该.rename()方法允许我们重命名列,类似于Word文档的“搜索和替换”功能。

在我们的DataFrame中搜索和选择

我们还需要知道如何操作或访问DataFrame中的数据,例如选择,搜索或删除数据值。您可以按列或按行执行此操作。让我们看看它是如何完成的。选择数据列的最简单方法是使用方括号[ ]。我们也可以使用方括号来选择多个列。假设我们只想查看六月的蔬菜数量。

quantity.loc['June']

注意: lociloc用于定位数据。

  • .iloc 按数字索引定位
  • .loc通过索引名称定位。这类似于listPython中的切片。

Pandas DataFrame对象还提供选择特定列的方法。以下示例显示了如何完成此操作。

import pandas as pd

df = pd.read_csv('cancer_stats.csv')

print(df.columns) # print columns of DataFrame

print("\nThe First Column")
print(df['Sex'].head()) # Fetch the sex colum from DataFrame
print("\nThe type of this column is: " + str(type(df['Sex'])) + "\n")

print("\nThe Second Column")
print(df['Under 1'].head()) # Fetch the Under 1 colum from DataFrame
print("\nThe type of this column is: " + str(type(df['Under 1'])) + "\n")


print("\nThe Last Column")
print(df['40-44'].head()) # Fetch the 40-44 colum from DataFrame
print("\nThe type of this column is: " + str(type(df['40-44'])) + "\n")

在第5行,该df.columns函数显示所有存在的列的名称。我们通过其名称访问列。第8、12和17行df['column_name']用于获取第一,第二和最后一列。

继续学习。

无需阅读视频或文档即可学习熊猫和数据分析。Educative的基于文本的课程易于浏览,并具有实时编码环境,从而使学习快速高效。

使用Python进行预测数据分析

从现有列创建一个新的DataFrame

我们还可以抓取多列并DataFrame从中创建一个新对象。

import pandas as pd

df = pd.read_csv('test.csv')

print(df.columns)

print("\nThe original DataFrame:")
print(df.head())

print("\nThe new DataFrame with selected columns is:\n")
new_df = pd.DataFrame(df, columns=['Sex', 'Under 1', '40-44'])
print(new_df.head())

数据分析变得简单:Python Pandas教程插图(4)

 

重新索引DataFrame中的数据

我们还可以通过索引本身或列为数据重新索引。使用reindexing reindex()可以使我们进行更改而不会弄乱对象的初始设置。

注意:重新索引的规则与SeriesDataFrame对象相同。

#importing pandas in our program
import pandas as pd

# Defining a series object
srs1 = pd.Series([11.9, 36.0, 16.6, 21.8, 34.2], index = ['China', 'India', 'USA', 'Brazil', 'Pakistan'])

# Set Series name
srs1.name = "Growth Rate"

# Set index name
srs1.index.name = "Country"

srs2 = srs1.reindex(['China', 'India', 'Malaysia', 'USA', 'Brazil', 'Pakistan', 'England'])
print("The series with new indexes is:\n",srs2)

srs3 = srs1.reindex(['China', 'India', 'Malaysia', 'USA', 'Brazil', 'Pakistan', 'England'], fill_value=0)
print("\nThe series with new indexes is:\n",srs3)

怎么运作的?好吧,在第11行,索引已更改。Row2和之间添加了新的索引名称Row4。在第14行,columns关键字应专门用于重新索引DataFrame的列。规则与索引相同。NaN默认情况下,将值分配给整个列。

数据分析变得简单:Python Pandas教程插图(6)

 

如何读取或导入熊猫数据

使用Pandas库从其他文件读取或导入数据非常容易。事实上,我们可以使用各种来源,如CSVJSONExcel加载我们的数据和访问它。让我们来看看每个。

CSV文件读取和导入数据

我们可以从CSV文件导入数据,这是熊猫用户的常见做法。我们只需创建或打开CSV文件,复制数据,将其粘贴到记事本中,然后将其保存在Python脚本所在的目录中即可。然后,您可以使用一些代码使用read_csv内置在Pandas中的函数来读取数据。

import pandas as pd
data = pd.read_csv('vegetables.csv')
print(data)

read_csv将默认生成索引列,因此我们需要将其更改为第一列是索引列。我们可以通过传递参数index_col来告诉Pandas要索引哪一列来做到这一点。

data = pd.read_csv("data.csv", index_col=0)

使用Pandas排序和清除数据后,我们可以使用简单的命令将其保存回原始文件。您只需要输入文件名和扩展名。多么简单!

df.to_csv('new_vegetables.csv')

从JSON读取和导入数据

假设您有一个JSON文件。JSON文件基本上就像存储的Python一样dict,因此Pandas可以使用该read_json函数轻松访问和读取它。让我们来看一个例子。

df = pd.read_json('purchases.json')

就像CSV文件一样,一旦我们使用Pandas来排序和清除数据,我们就可以使用简单的命令将其保存回原始文件中。您只需要输入文件名和扩展名。

df.to_json('new_purchases.json')

从Excel文件读取和导入数据

假设您有一个Excel文件。您可以类似地使用该read_excel功能来访问和读取该数据。

import pandas as pd
data = pd.read_excel('workers.xlsx')
print (data)

调用read_excel函数后,我们将Excel文件的名称作为参数传递,因此read_excel将打开文件的数据。我们可以print()显示数据。如果我们想更进一步,则可以loc()从更早的时候开始添加方法,从而使我们能够读取文件的特定行和列。

import pandas as pd
data = pd.read_excel('workers.xlsx')
 
print (data.loc[[1,4,7],['Name','Salary']])
数据分析变得简单:Python Pandas教程插图(8)熊猫数据争吵

有了数据后,就可以使用数据整理过程来处理和准备数据以进行分析。最常见的数据整理过程是合并,串联和分组。让我们总结一下这些基础知识。

与熊猫合并

当我们要收集共享键变量但位于不同DataFrame中的数据时,将使用合并。要合并DataFrame,我们使用merge()函数。说我们有df1df2

import pandas as pd
 
d = {
    'subject_id': ['1', '2', '3', '4', '5'],
    'student_name': ['Mark', 'Khalid', 'Deborah', 'Trevon', 'Raven']
}
df1 = pd.DataFrame(d, columns=['subject_id', 'student_name'])
print(df1)
import pandas as pd
 
data = {
    'subject_id': ['4', '5', '6', '7', '8'],
    'student_name': ['Eric', 'Imani', 'Cece', 'Darius', 'Andre']
}
df2 = pd.DataFrame(data, columns=['subject_id', 'student_name'])
print(df2)

那么,我们如何合并它们?很简单:具有merge()功能!

pd.merge(df1, df2, on='subject_id')

与熊猫分组

分组是我们对数据进行分类的方式。如果一个值出现在单个列的多行中,则可以将其他列中与该值相关的数据组合在一起。就像合并一样,它比听起来更简单。我们使用该groupby功能。看这个例子。

# import pandas library
import pandas as pd

raw = {
    'Name': ['Darell', 'Darell', 'Lilith', 'Lilith', 'Tran', 'Tran', 'Tran',
        'Tran', 'John', 'Darell', 'Darell', 'Darell'],
    'Position': [2, 1, 1, 4, 2, 4, 3, 1, 3, 2, 4, 3],
    'Year': [2009, 2010, 2009, 2010, 2010, 2010, 2011, 2012, 2011, 2013, 2013, 2012],
    'Marks':[408, 398, 422, 376, 401, 380, 396, 388, 356, 402, 368, 378]
}
df = pd.DataFrame(raw)

group = df.groupby('Year')
print(group.get_group(2011))

级联

串联是一个很长的词,意思是将一组数据添加到另一个。我们使用concat()函数来做到这一点。为了阐明合并和串联之间的区别,请合并merge()共享列上的数据,同时concat()合并跨列或行的DataFrame。

print(pd.concat([df1, df2]))

很简单,对吧?您应该知道的其他一些常见的数据整理过程是:

  • 映射数据并查找重复项
  • 查找数据中的异常值
  • 资料汇总
  • 重塑数据
  • 替换并重命名
  • 和更多

总结和后续步骤

既然您对Python熊猫有很好的了解,并且它提供了无数的好处,那么重要的是要知道接下来要学习什么。一旦掌握了基础知识(如如何导入,读取和处理数据),就该着手进行下一阶段的Python数据分析了:

  • 统计
  • 数字键盘
  • 高级数据整理
  • 数据可视化
  • 数据抓取
  • 实际项目

Educative的Python预测数据分析课程涵盖了所有这些概念,并提供了动手实践和行业标准示例。您可以通过测验,交互式示例和实际行为分析来掌握Pandas。到最后,您将成为一个自信的数据分析师!

免责声明:
1. 本站资源转自互联网,源码资源分享仅供交流学习,下载后切勿用于商业用途,否则开发者追究责任与本站无关!
2. 本站使用「署名 4.0 国际」创作协议,可自由转载、引用,但需署名原版权作者且注明文章出处
3. 未登录无法下载,登录使用金币下载所有资源。
IT小站 » 数据分析变得简单:Python Pandas教程

常见问题FAQ

没有金币/金币不足 怎么办?
本站已开通每日签到送金币,每日签到赠送五枚金币,金币可累积。
所有资源普通会员都能下载吗?
本站所有资源普通会员都可以下载,需要消耗金币下载的白金会员资源,通过每日签到,即可获取免费金币,金币可累积使用。

发表评论