Python数据分析:Pandas基础教程

简介: 在Pandas中Series被定义为一个带索引的一维数组,它可以是任何一个数据类型的NumPy数组。DataFrame是具有行和列索引的二维数据结构,每列可以是不同类型的值(数字、字符串、布尔型等)

一、简介

1. 数据分析的定义与背景

数据分析是指对大量的数据进行收集、处理和分析,并通过相关的统计量和可视化工具,以揭示数据中的关系、趋势和规律,从而洞察出问题和机会,做出决策。

在当今信息时代影响企业决策的因素越来越多,数据的数量和复杂度也越来越大。而作为一种处理海量数据的技术,数据分析得到了越来越多企业和组织的重视。

2. Python在数据分析中的优势

Python因其开发的高效性丰富的第三方库以及可读性等优点,被越来越多的数据分析人员选为数据分析工具。以下是Python在数据分析中的优势:

  • Python的开发效率远高于其他语言,一些数据分析工具或包的开发就是用Python实现的。
  • Python拥有丰富的库和生态系统,可提供大量科学计算、数据可视化、机器学习等高级功能。
  • Python提供了很多易于学习和使用的工具,人们可以用它很快地开发原型。

二、Pandas简介

1 Pandas库的作用和优势

Pandas是一个开源、易于使用的数据操作和分析库,它建立在NumPy之上,提供了许多灵活且快速的数据结构,可以让用户轻松地处理时间序列数据、统计数据等。

以下是Pandas在数据分析中的优点:

  • 用于处理表格数据的DataFrame对象,具有灵活的行列索引。
  • 用于处理一维数组的Series对象,可以对缺失的数据进行自动或手动填充。
  • 非常便利且功能强大的数据结构,可支持时间序列数据的处理等高级功能。

2 Pandas的数据结构Series和DataFrame

在Pandas中Series被定义为一个带索引的一维数组,它可以是任何一个数据类型的NumPy数组。DataFrame是具有行和列索引的二维数据结构,每列可以是不同类型的值(数字、字符串、布尔型等)。

下面是创建Series和DataFrame对象的示例代码:

import pandas as pd
import numpy as np

# 创建一个Series对象
s = pd.Series([1, 3, 5, np.nan, 6, 8])
print(s)

# 创建一个DataFrame对象
dates = pd.date_range('20210101', periods=6)
df = pd.DataFrame(np.random.randn(6, 4), index=dates, columns=list('ABCD'))
print(df)

3 Pandas库的安装和使用

如果您还没有安装Pandas可以使用以下命令:

pip install pandas

为了使用Pandas需要在代码中导入库:

import pandas as pd

现在可以使用Pandas库中的数据结构和函数来分析数据了。

三、数据读取与导出

1 读取本地CSV文件

import pandas as pd

# 读取CSV文件
df = pd.read_csv('data.csv')
print(df.head())

上述代码中使用Pandas的read_csv()函数可以读取本地CSV文件。read_csv()接受一个文件名作为参数,并且默认将文件的第一行作为列名。读取完毕后,使用head()函数可以查看文件的前几行数据。

2 读取Excel文件

import pandas as pd

# 读取Excel文件
df = pd.read_excel('data.xlsx', sheet_name='Sheet1')
print(df.head())

上述代码中使用Pandas的read_excel()函数可以读取本地Excel文件,也可以指定要读取的工作表。读取完毕后,使用head()函数可以查看文件的前几行数据。

3 从网站抓取数据

import pandas as pd
import requests

# 抓取网站的数据
url = "http://www.example.com/data.csv"
res = requests.get(url)
df = pd.read_csv(res.text)
print(df.head())

上述代码中使用Pandas的read_csv()函数可以直接从网站上抓取数据。使用requests库向网站发起请求,获取到数据后,再通过read_csv()函数将数据转化为DataFrame对象。

4 将数据导出为CSV或Excel文件

import pandas as pd

# 将数据导出为CSV文件
df.to_csv('newdata.csv', index=False)

# 将数据导出为Excel文件
df.to_excel('newdata.xlsx', sheet_name='Sheet1', index=False)

上述代码中可以使用to_csv()和to_excel()函数将数据导出为CSV或Excel文件。导出的文件可以指定文件名,同时也可以指定文件中是否包含行索引。

四、Pandas数据清洗

1 数据去重与空值处理

import pandas as pd

# 去除DataFrame中的重复数据
df2 = df.drop_duplicates()

# 去除DataFrame中具有空值的行
df3 = df.dropna()

# 填充DataFrame中的空值
df4 = df.fillna(0)

上述代码中可以使用drop_duplicates()函数去除DataFrame中的重复数据,使用dropna()函数去除DataFrame中具有空值的行,使用fillna()函数填充DataFrame中的空值。

2 数据合并与拆分

import pandas as pd

# 合并两个DataFrame对象
merged_df = pd.concat([df1, df2], ignore_index=True)

# 分割DataFrame对象
df1, df2 = pd.split(merged_df, [2])

上述代码中可以使用concat()函数将两个DataFrame对象进行合并,使用split()函数将DataFrame对象进行分割。

3 数据类型转换

import pandas as pd

# 转换数据类型为float
df['column_name'] = df['column_name'].astype(float)

# 转换数据类型为datetime
df['column_name'] = pd.to_datetime(df['column_name'])

上述代码中可以使用astype()函数将DataFrame中的数据类型转换为float、int等类型,也可以使用pd.to_datetime()函数将DataFrame中的数据类型转换为datetime类型。

4 数据排序与分组

import pandas as pd

# 根据列的值进行排序
df_sort = df.sort_values(by='column_name')

# 根据列的值进行分组
df_grouped = df.groupby('column_name')

上述代码中可以使用sort_values()函数根据列的值进行排序,也可以使用groupby()函数根据列的值进行分组。分组后可以使用agg()函数进行聚合操作。

五、数据分析与可视化

1 数据统计分析

# 数据统计分析
import pandas as pd

# 读取数据
df = pd.read_csv('data.csv')

# 统计数量
count = df['column_name'].count()

# 统计均值
mean = df['column_name'].mean()

# 统计标准差
std = df['column_name'].std()

# 统计最大值
max_value = df['column_name'].max()

# 统计最小值
min_value = df['column_name'].min()

print('Count: {} \nMean: {} \nStandard Deviation: {} \nMax Value: {} \nMin Value: {}'.format(count, mean, std, max_value, min_value))

上述代码中可以使用Pandas库中的count()、mean()、std()、max()和min()等函数统计数据的数量、均值、标准差、最大值和最小值。数据分析过程中可以结合业务需求确定要统计的列名。

2 数据透视表

# 数据透视表
import pandas as pd

# 读取数据
df = pd.read_csv('data.csv')

# 创建透视表
pivot_table = pd.pivot_table(df, index=['column1', 'column2'], values='column3', aggfunc='sum')

print(pivot_table.head())

上述代码中可以使用Pandas库中的pivot_table()函数创建数据透视表。参数中的index表示要进行分组的列名,values表示要进行计算的列名,aggfunc表示要进行的计算方式,例如sum、mean等。数据分析过程中可以选择不同的列名和计算方式,来创建符合业务需求的透视表。

3 数据可视化

3.1 折线图和散点图

# 折线图和散点图
import pandas as pd
import matplotlib.pyplot as plt

# 读取数据
df = pd.read_csv('data.csv')

# 绘制折线图
x = df['column1']
y = df['column2']
plt.plot(x, y)
plt.show()

# 绘制散点图
x = df['column1']
y = df['column2']
plt.scatter(x, y)
plt.show()

上述代码中可以使用Matplotlib库中的plot()函数绘制折线图,使用scatter()函数绘制散点图。在绘制图表之前需要准备好要绘制的横轴和纵轴的数据序列。

3.2 柱状图和饼图

# 柱状图和饼图
import pandas as pd
import matplotlib.pyplot as plt

# 读取数据
df = pd.read_csv('data.csv')

# 绘制柱状图
x = df['column1']
y = df['column2']
plt.bar(x, y)
plt.show()

# 绘制饼图
x = df['column1']
y = df['column2']
plt.pie(y, labels=x)
plt.show()

上述代码中可以使用Matplotlib库中的bar()函数绘制柱状图,使用pie()函数绘制饼图。在绘制图表之前需要准备好要绘制的横轴和纵轴的数据序列,或者是标签序列。

3.3 热力图和雷达图

# 热力图和雷达图
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

# 读取数据
df = pd.read_csv('data.csv')
df = df.pivot(index='column1', columns='column2', values='column3')
df = df.fillna(0)

# 绘制热力图
plt.imshow(df, cmap='hot', interpolation='nearest')
plt.colorbar()
plt.show()

# 绘制雷达图
labels = np.array(['column1', 'column2', 'column3', 'column4', 'column5'])
stats = [50, 80, 75, 40, 60]
angles = np.linspace(0, 2*np.pi, len(labels), endpoint=False)
stats = np.concatenate((stats, [stats[0]]))
angles = np.concatenate((angles, [angles[0]]))
fig = plt.figure()
ax = fig.add_subplot(111, polar=True)
ax.plot(angles, stats, 'o-', linewidth=2)
ax.fill(angles, stats, alpha=0.25)
ax.set_thetagrids(angles * 180/np.pi, labels)
ax.set_title('Radar Chart')
ax.grid(True)
plt.show()

上述代码中可以使用Matplotlib库中的imshow()函数绘制热力图,使用polar=True和plot()函数绘制雷达图。在绘制图表之前需要准备好要绘制的数据序列、标签序列和角度序列。在热力图绘制中,需要将数据转换为二维矩阵,填充缺失值。在雷达图绘制中,需要将角度转换为弧度,并将最后一个点与第一个点相连形成闭环。

六、案例分析:基于Pandas进行数据分析

Pandas是Python中的一种数据处理库可以用于数据的读取、清洗、处理和分析。在这里,我们将介绍三个基于Pandas的数据分析案例,分别是电商销售数据分析、股票数据分析和航班数据分析。

1 电商销售数据分析

电商销售数据往往是企业了解消费者和产品的数据来源之一。在这个案例中将使用Pandas库对电商销售数据进行分析。

首先需要导入Pandas和Matplotlib库:

import pandas as pd
import matplotlib.pyplot as plt

接下来读取数据并进行预处理:

# 读取数据
df = pd.read_csv('sales.csv')

# 数据预处理
df.dropna(inplace=True)
df['date'] = pd.to_datetime(df['date'])
df['year'] = df['date'].dt.year
df['month'] = df['date'].dt.month
df['day'] = df['date'].dt.day

上述代码中通过read_csv()函数读取了csv文件中的数据。接着使用dropna()函数删除了数据集中的缺失值;使用pd.to_datetime()函数将数据集中的日期字符串转换为日期数据类型。另外还添加了“年份”、“月份”和“日期”三个新的列,以便后续进行统计分析。

接下来对数据进行可视化分析:

# 统计分析并可视化
year_sales = df.groupby('year')['sales'].sum()
plt.plot(year_sales.index, year_sales.values)
plt.title('Yearly Sales')
plt.xlabel('Year')
plt.ylabel('Sales')
plt.show()

上述代码中通过groupby()函数按年份进行了分组,并使用sum()函数计算了每年的销售额。接着,我们使用Matplotlib库中的plot()函数对销售额进行绘图。通过这张图表,我们可以看出近几年的销售额有没有明显的增长趋势。

2 股票数据分析

股票数据分析是一种重要的市场分析手段。在这个案例中将使用Pandas库分析股票数据。

首先需要导入Pandas和Matplotlib库:

import pandas as pd
import matplotlib.pyplot as plt

接下来读取数据并进行预处理:

# 读取数据
df = pd.read_csv('stock.csv')

# 数据预处理
df['date'] = pd.to_datetime(df['date'])
df.set_index('date', inplace=True)
df.dropna(inplace=True)

上述代码中通过read_csv()函数读取了csv文件中的数据。接着使用pd.to_datetime()函数将数据集中的日期字符串转换为日期数据类型,并使用set_index()函数将日期列设置为索引。另外,我们还使用dropna()函数删除了数据集中的缺失值。

接下来对数据进行可视化分析:

# 统计分析并可视化
plt.plot(df.index, df['close'])
plt.title('Stock Price')
plt.xlabel('Date')
plt.ylabel('Price')
plt.show()

上述代码中使用Matplotlib库中的plot()函数对股票价格进行绘图。通过这张图表,我们可以看出股票价格的变化趋势。

3 航班数据分析

航班数据分析是一种了解航班趋势和优化航班运营的分析手段。在这个案例中将使用Pandas库分析航班数据。

首先需要导入Pandas和Matplotlib库:

import pandas as pd
import matplotlib.pyplot as plt

接下来读取数据并进行预处理:

# 读取数据
df = pd.read_csv('flights.csv')

# 数据预处理
df['date'] = pd.to_datetime(df[['year', 'month']].assign(day=1))
df.set_index('date', inplace=True)
df.drop(columns=['year', 'month'], inplace=True)

上述代码中,通过read_csv()函数读取了csv文件中的数据。接着,我们使用pd.to_datetime()函数将数据集中的“年份”和“月份”列转换为日期数据类型,并使用set_index()函数将日期列设置为索引。另外,我们还删除了“年份”和“月份”列。

接下来对数据进行可视化分析:

# 统计分析并可视化
monthly_flights = df['passengers'].resample('M').sum()
plt.plot(monthly_flights.index, monthly_flights.values)
plt.title('Monthly Flights')
plt.xlabel('Date')
plt.ylabel('Passengers')
plt.show()

上述代码中使用resample()函数按月份对数据进行重采样,并使用sum()函数计算每个月的总乘客数。接着,我们使用Matplotlib库中的plot()函数对航班月份和总乘客数进行绘图。通过这张图表,我们可以看出航班乘客数的变化趋势。

七、小结与回顾

1 Pandas的不足与发展方向

Pandas库在数据分析领域有广泛的应用,但它也存在着一些缺陷。例如对于海量数据的处理速度较慢。为了克服这种情况,Pandas库近期推出了一个新模块,名为Dask-Pandas,它旨在通过利用并行化处理来加快数据处理的速度。另外,Pandas库的发展方向还包括加强数据科学和机器学习方面的能力,进一步完善数据可视化和报告生成的功能。

2 Python数据分析的未来趋势

Python在数据分析领域有着巨大的潜力。现代Python数据分析工具的全面发展,包括NumPy、SciPy、Pandas等三大库的应用,吸引了越来越多的数据科学家的关注。随着GPU技术的发展,Python的数据分析工具也在逐渐向着大规模并行化和高性能计算的方向发展。此外,Python数据分析工具的应用已经逐渐涉及到人工智能、物联网等新兴领域,业内对Python数据分析的未来持乐观态度。

目录
相关文章
|
2月前
|
数据采集 数据可视化 数据挖掘
Pandas数据应用:天气数据分析
本文介绍如何使用 Pandas 进行天气数据分析。Pandas 是一个强大的 Python 数据处理库,适合处理表格型数据。文章涵盖加载天气数据、处理缺失值、转换数据类型、时间序列分析(如滚动平均和重采样)等内容,并解决常见报错如 SettingWithCopyWarning、KeyError 和 TypeError。通过这些方法,帮助用户更好地进行气候趋势预测和决策。
138 71
|
12天前
|
JSON 数据可视化 API
Python 中调用 DeepSeek-R1 API的方法介绍,图文教程
本教程详细介绍了如何使用 Python 调用 DeepSeek 的 R1 大模型 API,适合编程新手。首先登录 DeepSeek 控制台获取 API Key,安装 Python 和 requests 库后,编写基础调用代码并运行。文末包含常见问题解答和更简单的可视化调用方法,建议收藏备用。 原文链接:[如何使用 Python 调用 DeepSeek-R1 API?](https://apifox.com/apiskills/how-to-call-the-deepseek-r1-api-using-python/)
|
2月前
|
机器学习/深度学习 数据可视化 数据挖掘
使用Python进行数据分析的入门指南
本文将引导读者了解如何使用Python进行数据分析,从安装必要的库到执行基础的数据操作和可视化。通过本文的学习,你将能够开始自己的数据分析之旅,并掌握如何利用Python来揭示数据背后的故事。
|
2月前
|
存储 数据采集 数据可视化
Pandas数据应用:电子商务数据分析
本文介绍如何使用 Pandas 进行电子商务数据分析,涵盖数据加载、清洗、预处理、分析与可视化。通过 `read_csv` 等函数加载数据,利用 `info()` 和 `describe()` 探索数据结构和统计信息。针对常见问题如缺失值、重复记录、异常值等,提供解决方案,如 `dropna()`、`drop_duplicates()` 和正则表达式处理。结合 Matplotlib 等库实现数据可视化,探讨内存不足和性能瓶颈的应对方法,并总结常见报错及解决策略,帮助提升电商企业的数据分析能力。
154 73
|
23天前
|
IDE 测试技术 项目管理
【新手必看】PyCharm2025 免费下载安装配置教程+Python环境搭建、图文并茂全副武装学起来才嗖嗖的快,绝对最详细!
PyCharm是由JetBrains开发的Python集成开发环境(IDE),专为Python开发者设计,支持Web开发、调试、语法高亮、项目管理、代码跳转、智能提示、自动完成、单元测试和版本控制等功能。它有专业版、教育版和社区版三个版本,其中社区版免费且适合个人和小型团队使用,包含基本的Python开发功能。安装PyCharm前需先安装Python解释器,并配置环境变量。通过简单的步骤即可在PyCharm中创建并运行Python项目,如输出“Hello World”。
206 13
【新手必看】PyCharm2025 免费下载安装配置教程+Python环境搭建、图文并茂全副武装学起来才嗖嗖的快,绝对最详细!
|
2天前
|
Python
python pandas学习(一)
该代码段展示了四个主要操作:1) 删除指定列名,如商品id;2) 使用正则表达式模糊匹配并删除列,例如匹配订单商品名称1的列;3) 将毫秒级时间戳转换为带有时区调整的日期时间格式,并增加8小时以适应本地时区;4) 将列表转换为DataFrame后保存为Excel文件,文件路径和名称根据变量拼接而成。
16 3
|
1月前
|
存储 数据采集 数据可视化
Pandas数据应用:医疗数据分析
Pandas是Python中强大的数据操作和分析库,广泛应用于医疗数据分析。本文介绍了使用Pandas进行医疗数据分析的常见问题及解决方案,涵盖数据导入、预处理、清洗、转换、可视化等方面。通过解决文件路径错误、编码不匹配、缺失值处理、异常值识别、分类变量编码等问题,结合Matplotlib等工具实现数据可视化,并提供了解决常见报错的方法。掌握这些技巧可以提高医疗数据分析的效率和准确性。
82 22
|
1月前
|
存储 数据挖掘 数据处理
Python Pandas入门:行与列快速上手与优化技巧
Pandas是Python中强大的数据分析库,广泛应用于数据科学和数据分析领域。本文为初学者介绍Pandas的基本操作,包括安装、创建DataFrame、行与列的操作及优化技巧。通过实例讲解如何选择、添加、删除行与列,并提供链式操作、向量化处理、索引优化等高效使用Pandas的建议,帮助用户在实际工作中更便捷地处理数据。
47 2
|
2月前
|
数据采集 数据可视化 索引
Pandas数据应用:股票数据分析
本文介绍了如何使用Pandas库进行股票数据分析。首先,通过pip安装并导入Pandas库。接着,从本地CSV文件读取股票数据,并解决常见的解析错误。然后,利用head()、info()等函数查看数据基本信息,进行数据清洗,处理缺失值和重复数据。再者,结合Matplotlib和Seaborn进行数据可视化,绘制收盘价折线图。最后,进行时间序列分析,设置日期索引、重采样和计算移动平均线。通过这些步骤,帮助读者掌握Pandas在股票数据分析中的应用。
95 5
|
3月前
|
数据可视化 数据挖掘
R中单细胞RNA-seq数据分析教程 (3)
R中单细胞RNA-seq数据分析教程 (3)
61 3
R中单细胞RNA-seq数据分析教程 (3)