Pandas光速入门-一文掌握数据操作

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

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。

Pandas光速入门-一文掌握数据操作

简介


Pandas是Python的一个强大的数据分析库,是基于NumPy开发的。可以支持从各种格式的文件中导入数据,比如CSV、EXCEL、JSON、SQL等,并提供了两种数据结构Series和DataFrame,可以方便的对数据进行操作运算清洗加工等。

对了,与Python取自蟒蛇不同,Pandas取自Panel Data & Python Data Analysis(面板数据与Python 数据分析),而不是熊猫(doge)。

本文主要参考pandas文档。
Python环境搭建-从安装到Hello World

安装


如果使用pip安装:

pip install pandas

如果使用conda安装:

conda install pandas

如果使用的是Pycham,可以直接打开File->settings->Project:->Python Interpreter中安装库。
Pandas光速入门-一文掌握数据操作

Pandas光速入门-一文掌握数据操作
Pandas光速入门-一文掌握数据操作
可以打印pandas版本号即安装成功(●’◡’●)

import pandas as pd
print(pd.__version__)

一般定义别名pd
Pandas光速入门-一文掌握数据操作

数据结构


Paddas定义了两个数据结构Serise和DataFrame。

  • Serise

Serise表示一维数据,可以理解位一维数组,或一列。
Pandas光速入门-一文掌握数据操作

使用函数pandas.Series(data, index, dtype, name, copy)创建,介绍其中两个主要参数:1、data,数据源;2、index(可选),索引,默认从数字0开始,也可以自定义索引。

举个栗子:

import pandas as pd

data = ["点赞", "收藏", "评论"]  # 定义数据
var = pd.Series(data)  # 创建一个Series型变量var
print(var)

Pandas光速入门-一文掌握数据操作
自定义索引例子:

import pandas as pd

data = ["点赞", "收藏", "评论"]
var = pd.Series(data, index=["a", "b", "c"])  # 指定索引为a、b、c
print(var)
print(var["a"])  # 打印索引a对应数据

print("----------")
data2 = {"a": "点赞", "b": "收藏", "c": "评论"}
var2 = pd.Series(data2)  # 等价于使用key-value数据
print(var2["b"])

Pandas光速入门-一文掌握数据操作
更多属性和方法可以用的时候查阅文档,不便赘述,后同。

  • DataFrame

DataFrame表示二维数据,即二维数组,或表格。是由若干列Series组成的,每列的数据类型可以不同。
Pandas光速入门-一文掌握数据操作

使用函数pandas.DataFrame(data, index, columns, dtype, copy)创建,data和index参数同Series,columns是列名,其实对应Series中的name。

import pandas as pd

data = [['Alice', 18], ['Bob', 20]]
var = pd.DataFrame(data, columns=['Name', 'Age'])  # 指定列名
print(var)
print("----------")
print(var['Name'])  # 打印指定列
print("----------")
print(var.loc[0])  # 打印第一行

# 与上等价
data2 = {'Name': ['Alice', 18], 'Age': ['Bob', 20]}
var2 = pd.DataFrame(data2)  # 等价同上

Pandas光速入门-一文掌握数据操作

数据读写


上面的数据是直接定义的,但实际场景往往是从文件中读写数据,pandas可以支持很多文件格式,读取文件函数一般命名是read_*(路径),比如常用的CSV文件读取使用函数read_csv(),类似的写文件函数是to_*(路径)。

Pandas光速入门-一文掌握数据操作 Pandas光速入门-一文掌握数据操作

这里以Kaggle中鸢尾花数据为例(下载链接),将文件解压到D盘。可以使用绝对路径D:\Iris_flower_dataset.csv,也可以将文件放在项目根目录下直接使用相对路径即可。

import pandas as pd

data = pd.read_csv("D:\\Iris_flower_dataset.csv")
print(data)
print("----------")
print(data.to_string())

Pandas光速入门-一文掌握数据操作

插播反爬信息 )博主CSDN地址:https://wzlodq.blog.csdn.net/
读写其他格式的文件也是一样的,也可以从格式A读取后写成格式B文件,排列组合。

import pandas as pd

data = pd.read_csv("D:\\Iris_flower_dataset.csv")
print(data.to_numpy())  # 转成numpy
data.to_json("D:\\Iris_flower_dataset.json")  # 写为json文件
data.to_xml("D:\\Iris_flower_dataset.xml")  # 需要lxml库支持 pip install lxml
data.to_excel("D:\\Iris_flower_dataset.xlsx")  # 需要openpyxl库支持 pip install openpyxl

Pandas光速入门-一文掌握数据操作

Pandas光速入门-一文掌握数据操作

数据运算


如果学过关系型数据库SQL的话,就很好理解。pandas对表的操作大多都支持,比如连接、合并、分组等操作。

比如函数concat(objs, axis, join, ignore_inde, keys, levels, names, verify_integrity, sort, copy)连接合并数据,主要参数objs表示数据;axis默认0表示以行为连接轴,为1表示以列为连接轴;join可以选外连接outer(默认)和内连接inner;ignore_inde默认Fasle,为True则忽略原索引;keys设置外层索引等;names设置索引名;

import pandas as pd
# 合并数据
s1 = pd.Series(['a', 'b'])
s2 = pd.Series(['c', 'd'])
print(pd.concat([s1, s2]))
# 忽略原索引
print("----------")
print(pd.concat([s1, s2], ignore_index=True))
# 设置外层索引
print("----------")
print(pd.concat([s1, s2], keys=['s1', 's2']))
# 设置索引名
print("----------")
print(pd.concat([s1, s2], keys=['s1', 's2'], names=['Series name', 'Row ID']))
# 外连接
print("----------")
df1 = pd.DataFrame(
    {
        "A": ["A0", "A1", "A2", "A3"],
        "B": ["B0", "B1", "B2", "B3"],
        "C": ["C0", "C1", "C2", "C3"],
        "D": ["D0", "D1", "D2", "D3"],
    },
    index=[0, 1, 2, 3],
)
df2 = pd.DataFrame(
    {
        "B": ["B2", "B3", "B6", "B7"],
        "D": ["D2", "D3", "D6", "D7"],
        "F": ["F2", "F3", "F6", "F7"],
    },
    index=[2, 3, 6, 7],
)
print(pd.concat([df1, df2], axis=1))
# 内连接
print("----------")
print(pd.concat([df1, df2], axis=1, join="inner"))

Pandas光速入门-一文掌握数据操作

使用函数groupby(by, axis, level, as_index, sort, group_keys, squeeze, observed, dropna)进行分组聚合,主要参数by设置需要映射的列;axis默认0表示以行为连接轴,为1表示以列为连接轴;level指定多层索引的组;dropna默认True删除含NA的行和列,为False则不删NA的行列。
然后可以对分组进行相关操作,如求和、平均数、最小最大值等等。

import pandas as pd

# 以Animal分组求Max Speed平均数
df = pd.DataFrame({'Animal': ['Falcon', 'Falcon',
                              'Parrot', 'Parrot'],
                   'Max Speed': [380., 370., 24., 26.]})
print(df)
print(df.groupby(['Animal']).mean())
# 是否显示NaN
print("----------")
l = [[1, 2, 3], [1, None, 4], [2, 1, 3], [1, 2, 2]]
df2 = pd.DataFrame(l, columns=["A", "B", "C"])
print(df2)
print(df2.groupby(['B']).sum())
print(df2.groupby(['B'], dropna=False).sum())

Pandas光速入门-一文掌握数据操作

数据清洗


数据清洗是对一些无用的数据进行处理,以免影响实验结果,比如空值、错误格式、错误数据、重复数据等。

  • 空值

对于空值,我们可以使用dropna()函数进行删除,或者使用fillna()函数对空值进行填充,比如可以填充平均数mean()、中位数median()、众数mode()或自定义等。

DataFrame.dropna(axis, how, thresh, subset, inplace)其中axis默认为0,表示逢空值删除整行,置为1则删除整列;how默认为 ‘any’ 如果一行(或列)有任何一个 NA 就去掉整行,置为’all’则 一行(或列)都是 NA 才去掉这整行;subset:指定要检查的列;inplace默认False,表示返回一个新的DataFrame,否则返回None并覆盖原数据。

import pandas as pd

df = pd.DataFrame([1, None, 3, 5], columns=["value"])
print(df)
# 删除空值
print("----------")
print(df.dropna())
# 填充空值
print("----------")
mid = df.median()  # 计算中位数
print(df.fillna(mid))

Pandas光速入门-一文掌握数据操作

  • 错误格式

比如使用to_datetime()函数统一日期,to_numeric()统一浮点数,to_timedelta()统一时间。

import pandas as pd

# 统一日期格式
df = pd.DataFrame(['2022/9/01', '2022-09-02', '20220903'], columns=["Date"])
print(pd.to_datetime(df['Date']))
# 统一浮点数
print("----------")
df2 = pd.DataFrame(['20.2', '2022'], columns=["Number"])
print(pd.to_numeric(df2['Number']))
# 统一实际格式
print("----------")
df3 = pd.DataFrame(['1 days 06:05:01', '15.5s', '1h'], columns=["Time"])
print(pd.to_timedelta(df3['Time']))

Pandas光速入门-一文掌握数据操作

  • 错误数据

可以使用drop()删除,或者loc()修改。根据实际场景进行操作即可。

import pandas as pd

person = {
    "name": ['AlicE', 'Bob', 'CASEY'],
    "age": [18, 340, 22]
}
df = pd.DataFrame(person)
# 删除年龄>120的
for x in df.index:
    if df.loc[x, "age"] > 120:  #loc[行索引,列名]
        df.drop(x, inplace=True)
# 修改名字为小写
for x in df.index:
    df.loc[x, "name"] = df.loc[x, "name"].lower()
print(df)

Pandas光速入门-一文掌握数据操作

  • 重复数据

使用drop_duplicates() 函数可以直接删除重复值。

import pandas as pd

person = {
    "name": ['AlicE', 'Bob', 'Bob'],
    "age": [18, 34, 34]
}
df = pd.DataFrame(person)
print(df.drop_duplicates())

Pandas光速入门-一文掌握数据操作

数据可视化


pandas里的plot()函数其实是对Matplotlib的封装,具体的绘图可参考我这篇博客:Matplotlib光速入门-从安装到绘图实战,这边简单举个例子就润了。

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

# Series
ts = pd.Series(np.random.randn(1000), index=pd.date_range("1/1/2000", periods=1000))
ts = ts.cumsum()
ts.plot()
# DataFrame
df = pd.DataFrame(np.random.randn(1000, 4), index=ts.index, columns=list("ABCD"))
df = df.cumsum()
df.plot()

plt.show()

Pandas光速入门-一文掌握数据操作

原创不易,请勿转载本不富裕的访问量雪上加霜
博主首页:https://wzlodq.blog.csdn.net/
来都来了,不评论两句吗👀
如果文章对你有帮助,记得一键三连❤文章来源地址https://www.toymoban.com/news/detail-417251.html

到了这里,关于Pandas光速入门-一文掌握数据操作的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • go语言入门-一文带你掌握go语言函数

    本文go语言入门-掌握go语言函数收录于《go语言学习专栏》专栏,此专栏带你从零开始学习go语言。 在每一种编程语言中都有函数的概念,函数是基本的代码快,用于执行一个任务。 我们之前写的函数代码中,都包含一个main函数: 这个 main 就是一个函数的定义,包含了以下几

    2024年02月03日
    浏览(41)
  • 【Pandas】四个例子掌握用Python进行数据分析!一看就懂!

    本文选取了四个经典案例,主要聚焦Pandas在数据分析中的简单应用,结合代码学习利用Python进行数据分析过程(●ˇ∀ˇ●)。在每个例题开始前,我们将会标注出本例题涉及的重要知识点,并在重要处添加解释和代码注释,共读者参考。 如果你遇到任何问题,欢迎在评论区一起

    2024年02月17日
    浏览(62)
  • 【100天精通python】Day35:GUI界面编程_一文掌握Tkinter基本操作

    目录  专栏导读    1 GUI 编程概述 1.1 为什么需要GUI? 1.2 常见的GUI编程工具和库

    2024年02月12日
    浏览(54)
  • 初识大数据应用,一文掌握大数据知识文集(1)

    🏆作者简介,普修罗双战士,一直追求不断学习和成长,在技术的道路上持续探索和实践。 🏆多年互联网行业从业经验,历任核心研发工程师,项目技术负责人。 🎉欢迎 👍点赞✍评论⭐收藏 🔎 大数据领域知识 🔎 链接 专栏 大数据专业知识学习一 大数据专栏 大数据专

    2024年02月03日
    浏览(44)
  • 初识大数据,一文掌握大数据必备知识文集(10)

    🏆作者简介,普修罗双战士,一直追求不断学习和成长,在技术的道路上持续探索和实践。 🏆多年互联网行业从业经验,历任核心研发工程师,项目技术负责人。 🎉欢迎 👍点赞✍评论⭐收藏 🔎 大数据领域知识 🔎 链接 专栏 大数据专业知识学习一 大数据专栏 大数据专

    2024年01月15日
    浏览(51)
  • 初识大数据,一文掌握大数据必备知识文集(14)

    🏆作者简介,普修罗双战士,一直追求不断学习和成长,在技术的道路上持续探索和实践。 🏆多年互联网行业从业经验,历任核心研发工程师,项目技术负责人。 🎉欢迎 👍点赞✍评论⭐收藏 🔎 大数据领域知识 🔎 链接 专栏 大数据专业知识学习一 大数据专栏 大数据专

    2024年02月21日
    浏览(40)
  • 初识大数据,一文掌握大数据必备知识文集(15)

    🏆作者简介,普修罗双战士,一直追求不断学习和成长,在技术的道路上持续探索和实践。 🏆多年互联网行业从业经验,历任核心研发工程师,项目技术负责人。 🎉欢迎 👍点赞✍评论⭐收藏 🔎 大数据领域知识 🔎 链接 专栏 大数据专业知识学习一 大数据专栏 大数据专

    2024年01月22日
    浏览(42)
  • Python光速入门 - Flask轻量级框架

            FlASK是一个轻量级的WSGI Web应用程序框架,Flask的核心包括Werkzeug工具箱和Jinja2模板引擎,它没有默认使用的数据库或窗体验证工具,这意味着用户可以根据自己的需求选择不同的数据库和验证工具。Flask的设计理念是保持核心简单,同时提供强大的扩展性,用户

    2024年03月14日
    浏览(100)
  • 【Python】一文带你掌握数据容器之集合,字典

    思考:我们目前接触到了列表、元组、字符串三个数据容器了。基本满足大多数的使用场景为何又需要学习新的集合类型呢? 通过特性来分析: (1)列表可修改、 支持重复元素且有序 (2)元组、字符串不可修改、 支持重复元素且有序 大家有没有看出一些局限? 局限就在于:

    2024年02月05日
    浏览(45)
  • 【iOS逆向与安全】iOS插件开发光速入门

    经过之前的学习,相信你已经能熟练的使用Frida-trace、IDA Pro等逆向工具。不过,仅仅到这肯定是不够的。接下来,学会把你逆向的结果打包成插件并运行,那iOS逆向,你也就真正的入门了。 把逆向的结果制作成插件并运行 mac系统 Xcode:插件开发工具 已越狱iOS设备:运行deb插

    2024年02月06日
    浏览(40)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包