Python第三方库 - Pandas库

这篇具有很好参考价值的文章主要介绍了Python第三方库 - Pandas库。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. Pandas介绍

概念:

PandasPython 的核心数据分析支持库,提供了快速、灵活、明确的数据结构,旨在简单、直观地处理关系型、标记型数据。Pandas 的目标是成为 Python 数据分析实践与实战的必备高级工具,其长远目标是成为最强大、最灵活、可以支持任何语言的开源数据分析工具。经过多年不懈的努力,Pandas 离这个目标已经越来越近了。

2. Pandas基础

2.1 引入

# 引入pandas
import pandas as pd

2.2 数据结构

2.2.1 Series

Pandas Series 类似表格中的一个列(column),类似于一维数组,可以保存任何数据类型。
Series 由索引(index)和列组成,函数如下:

pandas.Series( data, index, dtype, name, copy)
参数 解释
data 一组数据( ndarray 类型)
index 数据索引标签,如果不指定,默认从 0 开始
dtype 数据类型,默认会自己判断
name 设置名称
copy 拷贝数据,默认为 False

举例:

import pandas as pd

1. 创建一个简单的 Series
a = [1, 2, 3] # dtype: int64
myvar = pd.Series(a)
print(myvar)
print(myvar[1]) # 输出索引为1的数值

2. 指定索引的方式
a = ["Google", "Runoob", "Wiki"]
myvar = pd.Series(a, index = ["x", "y", "z"]) # dtype: object
print(myvar) # x Google y Runoob z Wiki
print(myvar["y"]) # Runoob

3.使用 key/value 对象,类似字典来创建 Series
sites = {1: "Google", 2: "Runoob", 3: "Wiki"} # dtype: object
myvar = pd.Series(sites) 
print(myvar) # 1 Google 2 Runoob 3 Wiki

4. 只需要字典中的一部分数据,只需要指定需要数据的索引即可
sites = {1: "Google", 2: "Runoob", 3: "Wiki"}
myvar = pd.Series(sites, index = [1, 2]) 
print(myvar) # 1 Google 2 Runoob (就指定了索引为1和2的数据)

下图只针对例1进行的截图
Python第三方库 - Pandas库,# Python第三方库,python,pandas,ide

2.3 DataFrame
2.3.1 概念

DataFramepandas 库中的一个数据结构,用于存储和操作二维数据。它可以看作是由多个 Series 组成的表格,其中每个 Series 代表一列数据。有几种方法可以构造一个 DataFrame 对象。
一种方法是使用DataFrame的构造函数,可以通过传入一个二维的数据数组、行索引、列索引、数据类型等参数来创建一个 DataFrame 对象。构造函数的具体用法如下 columns=None, dtype=None, copy=False
 
其中:

  1. data参数是一个二维的数据数组,可以是一个列表、字典或其他数据结构
  2. index参数是行索引,可以是一个列表或其他可迭代对象
  3. columns参数是列索引,也可以是一个列表或其他可迭代对象
  4. dtyp参数是数据类型,用于指定每列的数据类型
  5. copy参数用于指定是否复制数据。

3 Pandas - CSV 文件

CSV(Comma-Separated Values,逗号分隔值,有时也称为字符分隔值,因为分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数字和文本)。
CSV 是一种通用的、相对简单的文件格式,被用户、商业和科学广泛应用。

3.1 语法

  1. 读取 csv
import pandas as pd
df = pd.read_csv('test.csv') # 方式一
df = pd.read_csv('test.csv', engine='python') #方式二
print(df) 
  1. 数据输出

to_string() 用于返回 DataFrame 类型的数据,如果不使用该函数,则输出结果为数据的前面 5 行和末尾 5 行,中间部分以 … 代替。

print(df) # 0    0  Peter Parker  Boston Celtics       0  ...  25      62     100    3000
print(df.to_string()) # 0    0  Peter Parker  Boston Celtics       0       PG   25      62     100    3000
  1. 数据储存

使用 to_csv() 方法将 DataFrame 存储为 csv 文件

nme = ["Google", "Runoob", "Taobao", "Wiki"]
st = ["www.google.com", "www.runoob.com", "www.taobao.com", "www.wikipedia.org"]
ag = [90, 40, 80, 98]
# 字典
dict = {'name': nme, 'site': st, 'age': ag}
df = pd.DataFrame(dict)
# 保存 dataframe
df.to_csv('1.csv')

Python第三方库 - Pandas库,# Python第三方库,python,pandas,ide
4. 数据处理 - 读取前几行

head( n ) 方法用于读取前面的 n 行,如果不填参数 n ,默认返回 5

import pandas as pd
df = pd.read_csv('test.csv', engine='python')
print(df.head()) # 默认读取前5行
print('-----------------------')
print(df.head(10)) # 读取前10行
  1. 数据处理 - 读取末尾几行

tail( n ) 方法用于读取尾部的 n 行,如果不填参数 n ,默认返回 5 行,空行各个字段的值返回 NaN

import pandas as pd
df = pd.read_csv('test.csv', engine='python')
print(df.tail()) # 默认末尾5行
print('-----------------------')
print(df.tail(10)) # 读取末尾10行
  1. 返回表格基本信息

info() 方法返回表格的一些基本信息

import pandas as pd
df = pd.read_csv('test.csv', engine='python')
print(df.info())

输出结果如下:
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 51 entries, 0 to 50  # 51行 编号0-50 类似于数组index
Data columns (total 9 columns):  # 9列数据
 #   Column    Non-Null Count  Dtype  # 各列的数据类型
---  ------    --------------  ----- 
 0   No        51 non-null     int64 
 1   Name      51 non-null     object
 2   Team      51 non-null     object
 3   Number    51 non-null     int64 
 4   Position  51 non-null     object
 5   Age       51 non-null     int64 
 6   Height    51 non-null     int64 
 7   Weight    51 non-null     int64 
 8   Salary    51 non-null     int64 
dtypes: int64(6), object(3) # 类型

3.2 遇到的问题

读取csv出现了报错,如下:

read_csv()的参数中加入engine = "python"即可
 
pd.read_csv('my.csv', engine='python')

Traceback (most recent call last):
  File "D:\pycharm\test.py", line 2, in <module>
    df = pd.read_csv('my.csv')
         ^^^^^^^^^^^^^^^^^^^^^
  File "D:\pycharm\venv\Lib\site-packages\pandas\io\parsers\readers.py", line 912, in read_csv
    return _read(filepath_or_buffer, kwds)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "D:\pycharm\venv\Lib\site-packages\pandas\io\parsers\readers.py", line 577, in _read
    parser = TextFileReader(filepath_or_buffer, **kwds)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "D:\pycharm\venv\Lib\site-packages\pandas\io\parsers\readers.py", line 1407, in __init__
    self._engine = self._make_engine(f, self.engine)
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "D:\pycharm\venv\Lib\site-packages\pandas\io\parsers\readers.py", line 1679, in _make_engine
    return mapping[engine](f, **self.options)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "D:\pycharm\venv\Lib\site-packages\pandas\io\parsers\c_parser_wrapper.py", line 93, in __init__
    self._reader = parsers.TextReader(src, **kwds)
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "pandas\_libs\parsers.pyx", line 557, in pandas._libs.parsers.TextReader.__cinit__
pandas.errors.EmptyDataError: No columns to parse from file

4 Pandas - JSON

4.1 语法

  1. 读取 json 文件
#  test.json
[
   {
   "id": "S001",
   "name": "Lisa",
   "age": 18,
   "hobby": "sing and dance"
   },
   {
   "id": "S002",
   "name": "Rose",
   "age": 17,
   "hobby": "draw pictures"
   },
   {
   "id": "S003",
   "name": Jack"",
   "age": 18,
   "likes": "play basketball"
   }
]

import pandas as pd
df = pd.read_json('test.json')
print(df.to_string())
print('-----------------------')
print(df)

# 输出相同 拿其中一个举例
     id  name  age            hobby
0  S001  Lisa   18   sing and dance
1  S002  Rose   17    draw pictures
2  S003  Jack   18  play basketball 
  1. 处理 json 数据
import pandas as pd
data = [
   {
   "id": "S001",
   "name": "Lisa",
   "age": 18,
   "hobby": "sing and dance"
   },
   {
   "id": "S002",
   "name": "Rose",
   "age": 17,
   "hobby": "draw pictures"
   },
   {
   "id": "S003",
   "name": "Jack",
   "age": 18,
   "hobby": "play basketball"
   }
]
df = pd.DataFrame(data)
print(df)
  1. 内嵌的 json 数据
import pandas as pd
data = [
   {
   "id": "S001",
   "name": "Lisa",
   "age": 18,
   "hobby": [{
     "mostlike" : "read books",
     "morelike" : "sing",
     "like" : "dance"
   }]
   },
   {
   "id": "S002",
   "name": "Rose",
   "age": 17,
   "hobby": "draw pictures"
   },
   {
   "id": "S003",
   "name": "Jack",
   "age": 18,
   "hobby": "play basketball"
   }
]
df = pd.DataFrame(data)
print(df)

# 输出
     id  name  age                                              hobby
0  S001  Lisa   18  [{'mostlike': 'read books', 'morelike': 'sing'...
1  S002  Rose   17                                      draw pictures
2  S003  Jack   18                                    play basketball
  1. 内嵌数据完整 解析
需要遇到一个方法: json_normalize()

test.json
[
   {
   "id": "S001",
   "name": "Lisa",
   "age": 18,
   "hobby": [{
     "mostlike" : "read books",
     "morelike" : "sing",
     "like" : "dance"
   }]},
   {
   "id": "S002",
   "name": "Rose",
   "age": 17,
   "hobby": [{
     "mostlike" : "draw",
     "morelike" : "calligraphy",
     "like" : "mountain climbing"
   }]},
   {
   "id": "S003",
   "name": "Jack",
   "age": 18,
   "hobby": [{
     "mostlike" : "play basketball",
     "morelike" : "play volleyball",
     "like" : "play football"
   }]}
]

import pandas as pd
import json

# 使用 Python JSON 模块载入数据
with open('test.json','r') as f:
    data = json.loads(f.read())

# 展平内嵌数据
df_nested_list = pd.json_normalize(data, record_path =['hobby'])
print(df_nested_list)

输出:
          mostlike         morelike               like
0       read books             sing              dance
1             draw      calligraphy  mountain climbing
2  play basketball  play volleyball      play football

# 展平全部数据 用 meta 这个参数
df_nested_list = pd.json_normalize(
    data,
    record_path =['hobby'],
    meta=['id', 'name' , 'age']
)
print(df_nested_list)

输出:
          mostlike         morelike               like    id  name age
0       read books             sing              dance  S001  Lisa  18
1             draw      calligraphy  mountain climbing  S002  Rose  17
2  play basketball  play volleyball      play football  S003  Jack  18

参考文档

[1] Pandas教程
[2] 菜鸟教程文章来源地址https://www.toymoban.com/news/detail-647444.html

到了这里,关于Python第三方库 - Pandas库的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python第三方库批量下载到本地,并离线批量安装第三方库

    鉴于公司内网安装的python版本为python3.6.5,而此时又需要安装第三方库pytest,本来是想直接在Python官网PyPI直接搜对应可匹配跑python3.6.5版本的pytest进行下载然后传到内网安装即可,但是发现pytest依赖别的第三方库,根据报错装了几个依赖的第三方库之后,发现还是一堆的问题

    2024年02月07日
    浏览(94)
  • Python手动下载第三方库

    第三方库网址(https://www.lfd.uci.edu/~gohlke/pythonlibs/)(https://pypi.org/) 搜索自己想要下载的库 下载自己电脑、版本所对应的whl文件(有时whl文件要与python相对应,例如python3.9,对应下载的文件名字里有cp39) 将下载的whl文件保存到Python目录下的Scripts文件夹里。通常你会希望将它放

    2024年02月06日
    浏览(41)
  • Python第三方库arrow

    https://pypi.org/project/arrow/ 处理时间日期的一个第三方库 Arrow is a Python library that offers a sensible and human-friendly approach to creating, manipulating, formatting and converting dates, times and timestamps . It implements and updates the datetime type, plugging gaps in functionality and providing an intelligent module API that support

    2024年02月03日
    浏览(44)
  • 在Vitis IDE中使用第三方库 libtiff 保存 tiff 文件

    一个Vitis IDE 裸机项目,需要将视频帧无损地保存下来 由于每帧的像素数据是 16bit 1通道的 bayer 格式,满足这一需求的图像格式似乎只有 tiff 格式 开源的tiff 库是 libtiff,而在 Vitis IDE 裸机项目中要使用的话就需要交叉编译 Vitis IDE 裸机的cpu是arm v7 cortex a9,用到的编译器是 ar

    2024年02月16日
    浏览(41)
  • 第十章 Python第三方库概览

    10.1 Python第三方库的获取和安装 Python第三方库依照安装方式灵活性和难易程度有三个方法: pip工具安装、自定义安装和文件安装 。 10.1.1 pip工具安装 最常用且最高效的Python第三方库安装方式是采用pip工具安装。pip是Python官方提供并维护的在线第三方库安装工具。 使用pip安装

    2024年02月07日
    浏览(57)
  • 清华镜像安装Python第三方库

    临时使用清华镜像 其中,使用时将some-package换成具体要安装成的包。安装一个scipy的包示例如下。 若出现如下报错: 报错翻译: [注意]新发布的pip可用:22.2-22.2.2 [注意]要更新,请运行:python.exe-m pip安装–升级pip 即pip有新版本了,系统建议升级最新版pip再去安装库。 解决办

    2024年02月13日
    浏览(50)
  • 离线安装Python第三方库

    本文章适用于 linux 离线安装 python 库, windows 下载 whl文件 并发送至 linux服务器 进行安装 文章记录缘由:内网服务器无法联网下载python包,需要通过联网主机下载后发送到内网服务器 一、查看 linux 主机适配的 whl 文件规范 二、下载所需 python 包的 whl 文件 进入清华镜像网站

    2024年02月09日
    浏览(50)
  • Python离线安装第三方库

    在使用Python需要安装第三方库时,使用“pip install”命令是最方便的,但这样需要联网环境。如果需要给不能联网的机器安装第三方库,则需要从指定网站下载离线安装包并完成安装。 访问网址“PyPI · The Python Package Index”,搜索需要安装的第三方安装包并下载。   下载的第

    2024年02月12日
    浏览(53)
  • Python第三方库 - Flask(python web框架)

    1.1 认识Flask Web Application Framework ( Web 应用程序框架)或简单的 Web Framework ( Web 框架)表示一个库和模块的集合,使 Web 应用程序开发人员能够编写应用程序,而不必担心协议,线程管理等低级细节。 1.2 Pycharm安装与简单测试 1.2.1 安装 Pycharm 安装 Flask 框架 File → Settings →

    2024年04月28日
    浏览(39)
  • 群星璀璨的Python江湖,Python第三方库介绍

    如果Python语言是一个江湖,那么python第三方库就是一个个身怀绝技的江湖侠客,这些侠客在这偌大的江湖尽情挥洒着江湖侠气。有人名扬天下,有人默默无闻,有人纵横捭阖,有人黯然谢幕,每天都在上演人生的悲欢离合。 那么什么是python第三方库呢? python是一门非常流行

    2024年03月10日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包