【理论积累】Python中的Pandas库【一】
Pandas库介绍
Pandas 是一个用于数据分析的 Python 第三方库,能够处理和分析不同格式的数据,例如:CSV、Excel、SQL 数据库等。Pandas 提供了两种数据结构,分别为 Series 和 DataFrame,灵活而方便地进行数据分析和操作。
以下是 Pandas 的核心概念和功能:
Series:类似于 NumPy 的 ndarray,可以存储一维数组,不同的是它能够自定义索引值。
DataFrame:是一个表格型的数据结构,拥有行和列的索引,类似于 Excel 表格,可以存储多维数组。DataFrame 可以被看成是Series类型的容器,每一列都是一个Series。
Pandas 读取和写入数据:Pandas 可以处理不同文件格式和数据源的数据,例如:CSV、Excel、SQL 数据库等。使用 Pandas,你可以轻松的读取、整理和清理这些数据,最终生成一个 DataFrame。
数据清洗:Pandas 可以构建数据管道,以图形化的方式进行数据操作和转换,例如:删减列和行,数据的修改和替换,数据去重等。
数据可视化:Pandas 可以通过 matplotlib 库进行数据可视化,将最终的数据可视化并呈现给用户。
Pandas 的功能十分丰富,可以处理任何类型的数据和数据结构,并提供多种方式进行数据操作和分析。由于其易学易用和高效性,Pandas 已成为数据科学和数据分析领域必不可少的工具之一。
如何从CSV、Excel、JSON等不同文件格式中读取数据到Pandas中?
Pandas 支持读取和写入多种数据文件格式,包括 CSV、Excel、JSON 等。下面是一些示例代码,演示如何将不同的文件格式读取到 Pandas 中。
从 CSV 文件中读取数据:
import pandas as pd data = pd.read_csv('data.csv') print(data)
从 Excel 文件中读取数据:
import pandas as pd data = pd.read_excel('data.xlsx', sheet_name='Sheet1') print(data)
从 JSON 文件中读取数据:
import pandas as pd data = pd.read_json('data.json') print(data)
你还可以设置读取时的参数,例如解析数据的方式、数据类型等。在 Pandas 中,有许多参数可以配置,以适应不同的需求和数据类型。可以参考官方文档以了解更多信息。
如何在Pandas中处理缺失值(NaN)?
Pandas中处理缺失值有以下几种方法:
dropna()函数:删除包含NaN的行或列(默认删除包含NaN的行)。
fillna()函数:将NaN值替换为其他数据(可以是0,平均值等)。
isna()函数:返回一个布尔值,表示数据是否为NaN。
notna()函数:返回一个布尔值,表示数据是否不为NaN。
replace()函数:替换数据中的一个值为另一个值。
下面是一个示例代码,演示如何使用Pandas处理缺失值:
import pandas as pd
import numpy as np
# 创建包含NaN的DataFrame
data = {'A': [1, 2, np.nan, 4],
'B': [5, np.nan, np.nan, 8],
'C': [9, 10, 11, 12]}
df = pd.DataFrame(data)
# 使用dropna删除包含NaN的行
df1 = df.dropna()
print(df1)
# 使用fillna将NaN替换为0
df2 = df.fillna(0)
print(df2)
# 使用fillna将NaN替换为平均值
df3 = df.fillna(df.mean())
print(df3)
# 使用isna返回布尔值
df4 = df.isna()
print(df4)
# 使用replace替换值
df5 = df.replace(np.nan, 0)
print(df5)
输出结果
A B C
0 1.0 5.0 9
3 4.0 8.0 12
A B C
0 1.0 5.0 9
1 2.0 0.0 10
2 0.0 0.0 11
3 4.0 8.0 12
A B C
0 1.0 5.0 9
1 2.0 6.5 10
2 2.333333 6.5 11
3 4.0 8.0 12
A B C
0 False False False
1 False True False
2 True True False
3 False False False
A B C
0 1.0 5.0 9
1 2.0 0.0 10
2 0.0 0.0 11
3 4.0 8.0 12
如何对Pandas中的数据进行简单的描述性统计?
Pandas中可以使用describe方法对数据进行简单的描述性统计,包括计数、平均数、标准差、最小值、25%,50%和75%分位数以及最大值等。具体实现步骤如下:
- 导入Pandas库。
- 读取数据。
- 使用describe方法对数据进行简单的描述性统计。
import pandas as pd
# 读取csv文件
data = pd.read_csv('data.csv')
# 对整个数据框进行描述性统计
data.describe()
# 对特定列进行描述性统计(例如,统计age列的描述性统计)
data['age'].describe()
如何对Pandas中的数据进行分组与聚合操作?
Pandas中的数据分组和聚合操作可以通过groupby方法来实现。具体步骤如下:
使用groupby方法将数据按照某一列或多列进行分组,例如:df.groupby('列名'),或者df.groupby(['列名1', '列名2'])
对分组后的数据进行聚合计算,可以使用sum、mean、count等方法,例如:df.groupby('列名').sum() 或 df.groupby(['列名1', '列名2']).mean()
可以使用agg方法进行自定义聚合计算,例如:df.groupby('列名').agg({'列名1': 'sum', '列名2': 'mean'})
也可以使用apply方法对每个分组执行特定的函数,例如:df.groupby('列名').apply(function)
可以使用transform方法对每个分组进行数据转换,例如:df.groupby('列名').transform(lambda x: x - x.mean())
总之,Pandas的数据分组和聚合操作非常灵活,可以根据不同的需求进行不同的操作,提供了很大的便利性。
如何使用Pandas进行日期和时间处理?
Pandas支持datetime格式的数据,可以使用pandas.to_datetime函数将字符串格式的日期转换为datetime格式,并进行各类日期和时间的计算和操作。
以下是一些常用的日期和时间处理方法:
创建日期时间索引 可以使用pandas.date_range()和pandas.DatetimeIndex()函数创建日期时间索引。
转换日期格式 可以使用pandas.to_datetime()函数将字符串格式的日期转换为datetime格式,或将日期格式化为指定格式。
获取日期时间属性 可以使用.dt属性来获取datetime格式数据的年、月、日、小时、分钟、秒等属性值。
偏移量计算 可以使用pandas.DateOffset()函数来进行日期偏移量计算,如计算前一天、前一周、前一月等。
时间序列重采样 可以使用pandas.resample()函数对时间序列数据进行重采样,如按月、周、日等频率进行统计。
日期时间操作 可以使用datetime.timedelta()函数进行日期和时间的加减操作。
import pandas as pd
import datetime
# 创建日期时间索引
dates = pd.date_range(start='20220101', end='20220110', freq='D')
print(dates)
# 转换日期格式
date_str = '20220101'
date_obj = pd.to_datetime(date_str, format='%Y-%m-%d')
print(date_obj)
# 获取日期时间属性
print(date_obj.year)
print(date_obj.month)
print(date_obj.day)
print(date_obj.hour)
print(date_obj.minute)
print(date_obj.second)
# 偏移量计算
date_offset = pd.DateOffset(months=1)
new_date = date_obj + date_offset
print(new_date)
# 时间序列重采样
data = pd.DataFrame({'date': dates, 'value': range(len(dates))})
data.set_index('date', inplace=True)
resample_data = data.resample('W').sum()
print(resample_data)
# 日期时间操作
delta = datetime.timedelta(days=30)
new_date = date_obj + delta
print(new_date)
如何在Pandas中进行数据的透视和堆叠操作?
Pandas中可以通过pivot_table()函数进行数据透视,也可以通过stack()函数进行数据堆叠。下面是示例代码:
import pandas as pd
# 创建数据集
df = pd.DataFrame({
'A': ['foo', 'bar', 'foo', 'bar', 'foo', 'bar', 'foo', 'foo'],
'B': ['one', 'one', 'two', 'three', 'two', 'two', 'one', 'three'],
'C': [1, 2, 3, 4, 5, 6, 7, 8],
'D': [10, 20, 30, 40, 50, 60, 70, 80]
})
# 进行数据透视
result = df.pivot_table(values='D', index=['A', 'B'], columns=['C'])
print(result)
C 1 2 3 4 5 6 7 8
A B
bar one 20.0 NaN NaN NaN NaN 60.0 NaN NaN
three NaN NaN NaN 40.0 NaN NaN NaN NaN
two NaN 20.0 NaN NaN NaN 60.0 NaN NaN
foo one 10.0 NaN 7.0 NaN NaN NaN 70.0 NaN
three NaN NaN NaN NaN NaN NaN NaN 80.0
two 50.0 30.0 NaN NaN 50.0 NaN NaN NaN
import pandas as pd
# 创建数据集
df = pd.DataFrame({
'A': ['foo', 'bar', 'foo', 'bar', 'foo', 'bar', 'foo', 'foo'],
'B': ['one', 'one', 'two', 'three', 'two', 'two', 'one', 'three'],
'C': [1, 2, 3, 4, 5, 6, 7, 8],
'D': [10, 20, 30, 40, 50, 60, 70, 80]
})
# 进行数据堆叠
stacked = df.stack()
print(stacked)
0 A foo
B one
C 1
D 10
1 A bar
...
6 C 7
D 70
7 A foo
B three
C 8
D 80
如何在Pandas中进行数据的可视化?
Pandas提供了多种数据可视化方法,其中常用的是基于Matplotlib的可视化。以下是在Pandas中进行数据可视化的步骤:
导入Pandas和Matplotlib库:
读取数据并创建DataFrame对象:
数据进行必要的处理和清洗:
- 用DataFrame.plot()方法进行可视化:
import pandas as pd
import matplotlib.pyplot as plt
# 读取数据
data = pd.read_csv('data.csv')
df = pd.DataFrame(data)
# 清洗数据
df = df.dropna()
# 绘制柱状图
df.plot(kind='bar', x='country', y='population')
plt.title('Population by Country')
plt.xlabel('Country')
plt.ylabel('Population')
plt.show()
# 绘制散点图
df.plot(kind='scatter', x='gdp_per_capita', y='life_expectancy')
plt.title('Relationship between GDP per capita and life expectancy')
plt.xlabel('GDP per capita')
plt.ylabel('Life expectancy')
plt.show()
如何在Pandas中进行数据的筛选和排序?
在Pandas中,可以使用以下的方式对数据进行筛选和排序:
使用布尔索引进行数据筛选:可以通过指定列的条件来筛选符合条件的数据。例如,df[df['age'] >= 18]可以选出所有年龄大于等于 18 的数据。
使用 isin() 函数进行数据筛选:可以使用 isin() 函数来筛选符合条件的数据。例如,df[df['city'].isin(['Shanghai', 'Beijing'])]可以筛选出居住在上海和北京的数据。
使用 sort_values() 函数进行数据排序:可以使用 sort_values() 函数对数据进行排序。例如,df.sort_values(by=['age', 'salary'], ascending=[False, True])可以按照年龄降序、薪水升序的方式进行排序。
使用 nlargest() 和 nsmallest() 函数进行数据筛选:可以使用 nlargest() 和 nsmallest() 函数来筛选前n个或后n个最大值或最小值。例如,df.nlargest(10, 'salary')可以选出薪水前10名的员工数据。
【理论积累】Python中的Pandas库【一】的更多相关文章
- Python之使用Pandas库实现MySQL数据库的读写
本次分享将介绍如何在Python中使用Pandas库实现MySQL数据库的读写.首先我们需要了解点ORM方面的知识. ORM技术 对象关系映射技术,即ORM(Object-Relational ...
- 沉淀,再出发:python中的pandas包
沉淀,再出发:python中的pandas包 一.前言 python中有很多的包,正是因为这些包工具才使得python能够如此强大,无论是在数据处理还是在web开发,python都发挥着重要的作用,下 ...
- 【归纳】正则表达式及Python中的正则库
正则表达式 正则表达式30分钟入门教程 runoob正则式教程 正则表达式练习题集(附答案) 元字符\b代表单词的分界处,在英文中指空格,标点符号或换行 例子:\bhi\b可以用来匹配hi这个单词,且 ...
- 利用Python中的mock库对Python代码进行模拟测试
这篇文章主要介绍了利用Python中的mock库对Python代码进行模拟测试,mock库自从Python3.3依赖成为了Python的内置库,本文也等于介绍了该库的用法,需要的朋友可以参考下 ...
- python中的pandas的两种基本使用
python中的pandas的两种基本使用2018年05月19日 16:03:36 木子柒努力成长 阅读数:480 一.pandas简介 pandas:panel data analysis(面板数据 ...
- Python中使用第三方库xlrd来写入Excel文件示例
Python中使用第三方库xlrd来写入Excel文件示例 这一篇文章就来介绍下,如何来写Excel,写Excel我们需要使用第三方库xlwt,和xlrd一样,xlrd表示read xls,xlwt表 ...
- Python中的Pandas模块
目录 Pandas Series 序列的创建 序列的读取 DataFrame DataFrame的创建 DataFrame数据的读取 Panel Panel的创建 Pandas Pandas ( Py ...
- Python 基础教程 —— Pandas 库常用方法实例说明
目录 1. 常用方法 pandas.Series 2. pandas.DataFrame ([data],[index]) 根据行建立数据 3. pandas.DataFrame ({dic}) ...
- python做数据分析pandas库介绍之DataFrame基本操作
怎样删除list中空字符? 最简单的方法:new_list = [ x for x in li if x != '' ] 这一部分主要学习pandas中基于前面两种数据结构的基本操作. 设有DataF ...
- 【转】利用Python中的mock库对Python代码进行模拟测试
出处 https://www.toptal.com/python/an-introduction-to-mocking-in-python http://www.oschina.net/transla ...
随机推荐
- 【LeetCode动态规划#04】不同的二叉搜索树(找规律,有点像智力题)
不同的二叉搜索树 力扣题目链接(opens new window) 给定一个整数 n,求以 1 ... n 为节点组成的二叉搜索树有多少种? 示例: 思路 题意分析 先找一下关系 当n = 1时,如果 ...
- Wikijs简介-强大&可扩展的开源维基软件
Wikijs - 最强大 最可扩展的开源维基软件 使用 wiki.js 美丽直观的界面,让文档成为写作的乐趣! 优点 随时随地安装 几乎适用于任何平台,并与PostgreSQL.MySQL.Maria ...
- 使用 Istioctl 安装 istio
使用 Istioctl 安装 istio 下载 Istio 转到 Istio 发布 页面,下载针对你操作系统的安装文件, 或用自动化工具下载并提取最新版本(Linux 或 macOS): [root@ ...
- flask-login使用方法
烧瓶登录 Flask-Login 为 Flask 提供用户会话管理.它处理登录.注销和长时间记住用户会话的常见任务. 它会: 将活动用户的 ID 存储在Flask Session中,让您轻松登录和注销 ...
- [J2EE:中间件]Slf4J+Logback快速入门
1 简述 Logback The generic,reliable,fast & flexible Logging Framwork. 一款通用的.可靠的.快速的和灵活的日志框架. Logba ...
- vivo全球商城:电商交易平台设计
作者:vivo 官网商城开发团队 - Cheng Kun.Liu Wei 本文介绍了交易平台的设计理念和关键技术方案,以及实践过程中的思考与挑战. 点击查阅:<vivo 全球商城>系列文章 ...
- DolphinDB +Python Airflow 高效实现数据清洗
DolphinDB 作为一款高性能时序数据库,其在实际生产环境中常有数据的清洗.装换以及加载等需求,而对于该如何结构化管理好 ETL 作业,Airflow 提供了一种很好的思路.本篇教程为生产环境中 ...
- JUC(四)多线程锁
目录 多线程锁 Synchronized锁的八种情况 公平锁和非公平锁 可重入锁 synchronized Lock 死锁 检查死锁 多线程锁 Synchronized锁的八种情况 以一个手机类为例, ...
- pip 国内源地址
1.使用方式 pip install 包名 -i 国内源地址 2.国内源地址 豆瓣(douban) http://pypi.douban.com/simple/ 清华大学 https://pypi. ...
- Spring Boot 整合邮件服务
参考教程 首先参考了 Spring Boot整合邮件配置,这篇文章写的很好,按照上面的操作一步步走下去就行了. 遇到的问题 版本配置 然后因为反复配置版本很麻烦,所以参考了 如何统一引入 Spring ...