精华内容
下载资源
问答
  • pandas添加一行一列汇总,并自定义列名和行标签1 实际需求2 一步到位3 数据与实战 手动反爬虫:原博地址 https://blog.csdn.net/lys_828/article/details/114819165 知识梳理不易,请尊重劳动成果,文章仅发布在...

    pandas添加一行一列汇总,并自定义列名和行标签


    手动反爬虫:原博地址 https://blog.csdn.net/lys_828/article/details/114819165

     知识梳理不易,请尊重劳动成果,文章仅发布在CSDN网站上,在其他网站看到该博文均属于未经作者授权的恶意爬取信息
    

    本文为付费内容,禁止转载

    1 实际需求

    在处理数据的时候发现:往往要对一行或者一列的数据进行汇总,这时候就有了按行求和或者按列求和的需要,同时也要定义一下行名(标签名)和列名,结果如下图
    在这里插入图片描述

    2 一步到位

    这里介绍的方式不需要什么循环,也不需要什么concat的操作的,一行简简单单地代码即可搞定

    assign()方法,看一下使用的说明文档
    在这里插入图片描述
    明确告诉了这种方法可以添加新列,那么在DataFrame数据中,可以对列操作的就同样可以对行操作(和矩阵类似),只需要进行转置即可

    3 数据与实战

    准备数据并转化为DataFrame数据

    d = {'E1': {2013: 26, 2014: 48, 2015: 94, 2016: 50, 2017: 34, 2018: 30, 2019: 28},
     'E2': {2013: 37, 2014: 43, 2015: 37, 2016: 19, 2017: 21, 2018: 30, 2019: 15},
     'E3': {2013: 44, 2014: 42, 2015: 36, 2016: 25, 2017: 12, 2018: 14, 2019: 18},
     'E4': {2013: 39, 2014: 42, 2015: 31, 2016: 13, 2017: 16, 2018: 21, 2019: 15},
     'E5': {2013: 25, 2014: 55, 2015: 39, 2016: 14, 2017: 21, 2018: 10, 2019: 12},
     'E6': {2013: 0, 2014: 0, 2015: 0, 2016: 0, 2017: 10, 2018: 18, 2019: 30},
     'E7': {2013: 0, 2014: 0, 2015: 0, 2016: 0, 2017: 16, 2018: 15, 2019: 14},
     'E8': {2013: 16, 2014: 13, 2015: 9, 2016: 3, 2017: 1, 2018: 0, 2019: 1},
     'E9': {2013: 0, 2014: 0, 2015: 0, 2016: 0, 2017: 0, 2018: 15, 2019: 18},
     'E10': {2013: 0, 2014: 0, 2015: 0, 2016: 0, 2017: 3, 2018: 6, 2019: 6},
     'E11': {2013: 187, 2014: 243,2015: 246,2016: 124,2017: 134,2018: 159, 2019: 157}}
    df = pd.DataFrame(d)
    df
    

    输出结果为:(正常赋值为DataFrame数据)
    在这里插入图片描述
    添加一列

    df = df.assign(Total = df.T.sum()) 
    df
    

    输出结果为:(assign括号中等号前面的变量就是列名称,后面的变量就是列数据,即这里的列名就是Total,列数据就是横向求和的值)
    在这里插入图片描述
    添加一行,只需要对原数据进行转置即可

    df.T.assign(Total=df.sum()).T
    

    输出结果为:(注意对比添加行和列的操作中的转置使用,最后要和原来的数据结构一致,还要转置回来)
    在这里插入图片描述
    至此整个数据处理的过程就梳理完毕了

    展开全文
  • 快来了解新库Modin,可以分割pandas的计算量,提高数据处理效率,一行代码即刻开启Pandas四倍速。首先了解一些基础知识:Pandas作为Python中用于处理数据的库,能简单且灵活地处理不同种类、大小的数据。除此之外,...

    b684b4cd82305fa378448c3ea9f3d819.png
    全文共4459字,预计学习时长13分钟

    dfc901e659e5edb8588ba0b136c8f19e.png
    图源:Unsplash

    虽然Pandas是Python中处理数据的库,但其速度优势并不明显。

    如何让Pandas更快更省心呢?快来了解新库Modin,可以分割pandas的计算量,提高数据处理效率,一行代码即刻开启Pandas四倍速。

    首先了解一些基础知识:

    Pandas作为Python中用于处理数据的库,能简单且灵活地处理不同种类、大小的数据。除此之外,Pandas还有许多函数有助于轻松处理不同数据。

    1342da7775f65fb2fff5dc78fc33b195.png
    Python不同工具包的受欢迎程度。

    但Pandas也有缺点:处理大数据集的速度非常慢。

    在默认设置下,Pandas只使用单个CPU内核,在单进程模式下运行函数。这不会影响小型数据,因为程序员可能都不会注意到速度的变化。但对于计算量繁杂的大数据集来说,仅使用单内核会导致运行速度非常缓慢。有些数据集可能有百万条甚至上亿条数据,如果每次都只进行一次运算,只用一个CPU,速度会很慢。

    绝大多数现代电脑都有至少两个CPU。但即便是有两个CPU,使用pandas时,受默认设置所限,一半甚至以上的电脑处理能力无法发挥。如果是4核(现代英特尔i5芯片)或者6核(现代英特尔i7芯片),就更浪费了。Pandas本就不是为了高效利用电脑计算能力而设计的。

    新的Modin库,通过自动将计算分摊至系统所有可用的CPU,从而加速pandas处理效率。因此,Modin据说能够使任意大小的Pandas DataFrames拥有和CPU内核数量同步的线性增长。

    0f5e17e0f8ecf59cb3b95c25b3eeabeb.png
    图源:Unsplash

    现在,我们一起来看看具体操作和代码的实例。

    如何使用Modin和Pandas实现平行数据处理

    在Pandas中,给定DataFrame,目标是尽可能以最快速度来进行数据处理。可以使用.mean()来算出每行的平均数,用groupby将数据分类,用drop_duplicates()来删除重复项,还有很多Pandas的其他内置函数以供使用。

    之前提到,Pandas只调用一个CPU来进行数据处理。这是一个很大的瓶颈,特别是对体量更大的DataFrames,资源的缺失更加突出。

    理论上来讲,并行计算就如同在所有可用CPU内核中的不同数据点中计算一样简单。之于Pandas DataFrame,一个基本想法就是根据不同的CPU内核数量将DataFrame分成几个不同部分,让每个核单独计算。最后再将结果相加,这在计算层面来讲,运行成本比较低。

    35cce458f5f20d6a2be260dd8fe488d9.png

    如何提高多核系统数据处理速度。在单核系统处理过程中(左),所有10个任务都用一个CPU处理。而在双核系统中(右),每个节点处理5个任务,处理速度提高一倍。

    这其实也就是Modin的原理,将 DataFrame分割成不同的部分,而每个部分由发送给不同的CPU处理。Modin可以切割DataFrame的横列和纵列,任何形状的DataFrames都能平行处理。

    假如拿到的是很有多列但只有几行的DataFrame。一些只能对列进行切割的库,在这个例子中很难发挥效用,因为列比行多。但是由于Modin从两个维度同时切割,对任何形状的DataFrames来说,这个平行结构效率都非常高。不管有多少行,多少列,或者两者都很多,它都能游刃有余地处理。

    71e8d079f602ae89ce348ecfa9c9e44a.png

    Pandas DataFrame(左)作为整体储存,只交给一个CPU处理。ModinDataFrame(右)行和列都被切割,每个部分交给不同CPU处理,有多少CPU就能处理多少个任务。

    上述图像只是一个简单的例子。Modin通常会用到一个分盘助手(Partition Manager),它能根据操作的种类改变分盘的大小和形状。比如说,可能需要一整行或者一整列(数据)的操作。在这种情况下,分盘助手就能对任务进行切割,再分别交给不同的CPU处理,从而找到任务处理的最优解,灵活方便。

    在并行处理时,Modin会从Dask或者Ray工具中任选一个来处理繁杂的数据,这两个工具都是PythonAPI的平行运算库,在运行Modin的时候可以任选一个。目前为止,Ray应该最为安全且最稳定。Dask后端还处在测试阶段。

    至此,理论说的够多了。接下来聊聊代码和速度基准点。

    基准测试Modin的速度

    pip是安装Modin最简单的方法。用以下命令就能安装Modin, Ray和其他相关工具:

    pipinstallmodin[ray]

    下面的例子和基准测试中,会用到Kaggle公司的CS:GO CompetitiveMatchmaking Data。每行CSV都包含一套完整CS:GO的比赛数据。

    现在用最大的CSV文件来进行测试。文件名为esea_master_dmg_demos.part1.csv,文件大小1.2GB。有了这么多数据,就能看到Pandas的速度有多慢,Modin又是怎么解决这个问题的。使用i7-8700kCPU来进行测试,它有6核,12线程。

    首先,用熟悉的命令read_csv()来读取数据。代码在Pandas和Modin中都是一样的。

    ### Read in the data with Pandas
    import pandas as pd
    s = time.time()
    df = pd.read_csv("esea_master_dmg_demos.part1.csv")
    e = time.time()
    print("Pandas Loading Time = {}".format(e-s))
    ### Read in the data with Modin
    import modin.pandas as pd
    s = time.time()
    df = pd.read_csv("esea_master_dmg_demos.part1.csv")
    e = time.time()
    print("Modin Loading Time = {}".format(e-s))

    为了测试速度,导入time模块,在read_csv()前后都放上了time.time()命令。Pandas花了8.38秒将数据从CSV加载到内存,而Modin只花了3.22秒,快了接近2.6倍。仅仅改变了输入命令就达到这样的效果,还不错。

    下面试试更有挑战性的任务。将多个DataFrame串联起来在Pandas中是很常见的操作,需要一个一个地读取CSV文件看,再进行串联。Pandas和Modin中的pd.concat()函数能很好实现这一操作。

    预计Modin能在这类操作中表现很好,因为这项任务涉及的数据量很大。代码如下。

    import pandas as pd
    df = pd.read_csv("esea_master_dmg_demos.part1.csv")
    s = time.time()
    df = pd.concat([df for _ inrange(5)])
    e = time.time()
    print("Pandas Concat Time = {}".format(e-s))
    import modin.pandas as pd
    df = pd.read_csv("esea_master_dmg_demos.part1.csv")
    s = time.time()
    df = pd.concat([df for _ inrange(5)])
    e = time.time()
    print("Modin Concat Time = {}".format(e-s))

    在上述代码中,重复拼接了5次DataFrame。Pandas以3.56秒的速度完成,Modin仅用0.041秒,快了86.83倍!虽然只有6核CPU,对DataFrame进行切分仍然能显著提高速度。

    .fillna()是Pandas常用于DataFrame清理的函数。它能找到DataFrame中所有NaN值,再替换成需要的值。这个过程需要很多步骤。Pandas要逐行逐列地去浏览,找到NaN值,再进行替换。使用Modin就能完美解决重复运行简单操作的问题。

    import pandas as pd
    df = pd.read_csv("esea_master_dmg_demos.part1.csv")
    s = time.time()
    df = df.fillna(value=0)
    e = time.time()
    print("Pandas Concat Time = {}".format(e-s))
    import modin.pandas as pd
    df = pd.read_csv("esea_master_dmg_demos.part1.csv")
    s = time.time()
    df = df.fillna(value=0)
    e = time.time()
    print("Modin Concat Time = {}".format(e-s))

    这次,Pandas运行了.fillna()仅花了1.8秒,而Modin只用了0.21秒,快了8.57倍!

    注意事项以及最后的测试

    Modin能一直这么快吗?

    并不是。

    39436d79305537f4f5a818bb813c16ba.png
    图源:Unsplash

    有时Pandas会比Modin快一些,即使在处理这个有5,992,097(接近6百万)行的数据时。下列表格对比展示了笔者分别使用Pandas和Modin做测试的运行时间。

    如图所示,在一些操作中,Modin的速度明显要快一些,通常是读取数据,查询数值的时候。但Pandas在其他操作会快很多,比如统计计算。

    cfdb16bbaf0a535fdface684719c56c8.png

    Modin实用技巧

    Modin还是相对比较新的库,还在开发扩展中。所以并不是所有Pandas函数都能在Modin中得以实现。如果想用Modin来运行一个尚未加速的函数,它还是会默认在Pandas中运行,来保证没有任何代码错误。

    在默认设置下,Modin会使用机器上所有能用的CPU。如果想把一部分CPU用到别的地方,可以通过Ray的初始设定来设置Modin的权限,因为Modin会在后端使用Ray这个工具。

    import ray
    ray.init(num_cpus=4)
    import modin.pandasas pd

    处理大量数据的时候,数据集的大小一般不会超过系统内存的大小。Modin有一个特定标志,可以设它的值为true,开启“核外(out of core)”模式。核外运行就意味着Modin会把硬盘当做溢出内存,这样就可以处理比内存还大的数据集了。可以设置如下环境变量来启用这个功能:

    exportMODIN_OUT_OF_CORE=true

    总结

    上文就是使用Modin来对Pandas函数进行加速的方法。

    只要改变一下输入命令就可以实现,非常简单。希望本文能够帮助你成为“熊猫速度达人”!

    完结撒花!

    b105c894176d474b5201550a09808664.png

    84cec71d3d60453c3dde7fc6d95d4535.png

    留言 点赞 关注

    我们一起分享AI学习与发展的干货

    编译组:翁梦徽、李韵帷

    相关链接:https://www.kdnuggets.com/2019/11/speed-up-pandas-4x.html

    如需转载,请私信小芯,遵守转载规范

    展开全文
  • 点击上方蓝字,每天一起学 Python,文末领送书福利文 | Lukas Frei译 | EarlGrey引言在第次导入新数据集时,我们首先要做的是了解数据。这包括确定特定预测变量的范围,识别每个预测变量的数据类型以及计算每个...

    点击上方蓝字,每天一起学 Python,文末领送书福利

    177773be54637b0bf84a730e46f0ac64.png

    文 | Lukas Frei

    译 | EarlGrey

    引言

    在第一次导入新数据集时,我们首先要做的是了解数据。这包括确定特定预测变量的范围,识别每个预测变量的数据类型以及计算每个预测变量的缺失值的数量或百分比等步骤。这一步通常被称为探索性数据分析(EDA,exploratory data analysis)。

    pandas库提供了许多非常有用的功能来帮助我们完成EDA。但是,在能够应用这些功能之前,通常我们必须先使用更普遍的功能,如 df.describe()。不过这些函数提供的功能仍是有限的,并且不同新数据集的初步EDA工作流,大多数情况下是非常相似。

    作为一个特别不喜欢重复性任务的人,我最近在寻找合适的工具,幸运地发现了 pandas-profiling。它没有一次只给用户提供一种输出,而是快速生成一个内容异常丰富的HTML文件,其中包含有进行更具体的数据分析前可能需要了解的大部分内容。

    接下来,我将向您介绍在Titanic数据集中应用pandas-profiling。

    更快完成 EDA

    由于数据类型丰富、缺失值较多,我选择在泰坦尼克号数据集上应用pandas-profiling。在我看来,pandas-profiling尤其适合当数据尚未清理并仍需要进一步个性化调整的数据集。为了更好完成精细调整,你需要知道从哪里开始,以及重点要关注什么。这是pandas-profiling的用武之地。

    首先,让我们导入数据,并使用pandas来检索一些描述性统计信息:

    # 导入相关包

    import pandas as pd

    import pandas_profiling

    import numpy as np

    # 导入数据

    df = pd.read_csv('/Users/lukas/Downloads/titanic/train.csv')

    # 描述性统计信息

    df.describe()

    上述代码执行后,会产生如下输出:

    f5290bfdccc95a6e5fae27cefbc28f74.png

    虽然上面的输出包含大量信息,但它并没有告诉您可能感兴趣的所有内容。例如,你知道了数据框有891行。如果要验证,则必须添加另一行代码以确定数据框的长度。虽然这些计算并不是非常耗时,但一次又一次地重复这些计算确实占用了时间,而您本可以用在清理数据上。

    概览

    现在,让我们使用pandas-profiling做同样的事情:

    pandas_profiling.ProfileReport(df)

    运行这行代码将创建数据集的HTML EDA报告。运行代码后,结果将直接内联在 notebook 中; 但是,你也可以选择将EDA报告另存为HTML文件,以便共享。

    EDA报告的第一部分,是概述部分,提供了数据的基本信息(观察数量,变量数量等)。它还会输出一个警告列表,告诉你在何处仔细检查数据,并重点清理哪些数据。

    957c79c347e17d18e1ff729b3348413b.png概览部分

    单变量 EDA

    概述之后,EDA报告为您提供有关每个特定变量的洞察。其中还包括描述每个变量分布的可视化小图:

    7300466a8cc58bc761c697e801731dec.png数字变量 'Age' 的输出

    如上所示,pandas-profiling为您提供了一些有用的指标,例如缺失值的百分比和数量,以及我们之前看到的描述性统计数据。由于'Age'是一个数字变量,使用直方图可视化其分布告诉我们,这个变量似乎是向右偏的。

    类型变量的输出,与数字变量仅有很小的变化:

    2342da33b8fcd1adea7dad1446add7a3.png类型变量 'Sex' 的输出

    pandas-profiling并不计算均值、最小值和最大值,而是计算分类变量的类计数。由于'Sex'是一个二元变量,我们只找到两个不同的计数。

    你可能想知道pandas-profiling究竟是如何计算它的输出的。幸运的是,我们可以在[GitHub]上找到源代码。由于我喜欢在代码中制作不必要的黑盒,我下面将快速深入研究数字变量的源代码:

    def describe_numeric_1d(series, **kwargs):

    """Compute summary statistics of a numerical (`TYPE_NUM`) variable (a Series).

    Also create histograms (mini an full) of its distribution.

    Parameters

    ----------

    series : Series

    The variable to describe.

    Returns

    -------

    Series

    The description of the variable as a Series with index being stats keys.

    """

    # Format a number as a percentage. For example 0.25 will be turned to 25%.

    _percentile_format = "{:.0%}"

    stats = dict()

    stats['type'] = base.TYPE_NUM

    stats['mean'] = series.mean()

    stats['std'] = series.std()

    stats['variance'] = series.var()

    stats['min'] = series.min()

    stats['max'] = series.max()

    stats['range'] = stats['max'] - stats['min']

    # To avoid to compute it several times

    _series_no_na = series.dropna()

    for percentile in np.array([0.05, 0.25, 0.5, 0.75, 0.95]):

    # The dropna() is a workaround for https://github.com/pydata/pandas/issues/13098

    stats[_percentile_format.format(percentile)] = _series_no_na.quantile(percentile)

    stats['iqr'] = stats['75%'] - stats['25%']

    stats['kurtosis'] = series.kurt()

    stats['skewness'] = series.skew()

    stats['sum'] = series.sum()

    stats['mad'] = series.mad()

    stats['cv'] = stats['std'] / stats['mean'] if stats['mean'] else np.NaN

    stats['n_zeros'] = (len(series) - np.count_nonzero(series))

    stats['p_zeros'] = stats['n_zeros'] * 1.0 / len(series)

    # Histograms

    stats['histogram'] = histogram(series, **kwargs)

    stats['mini_histogram'] = mini_histogram(series, **kwargs)

    return pd.Series(stats, name=series.name)

    虽然这可能看起来像一个巨大的代码块,但它实际上很容易理解。Pandas-profiling的源代码中引入了另一个确定每个变量类型的函数。如果变量被识别为数字变量,上面的函数将产生之前显示的输出。此函数使用的是基本的pandas Series 操作,例如series.mean(),并将结果存储在 stats 字典中。图表则是使用matplotlib的matplotlib.pyplot.hist函数的改编版本生成的,目的是为了能够处理各种类型的数据集。

    相关性与样本

    在每个特定变量的EDA下,pandas-profiling还将输出Pearson和Spearman相关性矩阵。

    f9c4112363c8994f62472c6be3c1fab7.pngPearson 相关性矩阵

    如果你愿意,可以在生成报告的初始代码行中设置一些相关阈值。通过这样做,你可以调整为你认为合适的相关性强度。

    最后,pandas-profiling将输出代码样本。严格来说,这不是代码样本,只是数据的头部。当前几个观察结果不能代表数据的一般特征时,这可能会导致问题。

    4088d0999e8c05ec15796da32372eabc.png

    因此,我建议不要使用最后一个输出进行初始分析,而是运行df.sample(5),它将从您的数据集中随机选择五个观察值。

    结论

    总而言之,pandas-profiling提供了一些有用的功能,特别是你的主要目标是快速理解您数据或以可视格式与他人分享EDA。当然,它并没有让EDA变得自动化,深入的个性化调整,仍必须要手动完成。

    项目地址:https://github.com/pandas-profiling


    文末送书活动活动规则大家请一定要查看,点击这篇推文哦:从今天起,每天至少送大家一本书这篇推文的福利赠书是:《Python 数据科学入门》,送给本篇文章点赞最多、且符合活动要求的精选留言者。最新赠书名单:将在留言区公布,请联系加我好友(微信号:codingpython)领取奖励哈~

    回复下方「关键词」,获取优质资源

    回复关键词「 pybook03」,立即获取主页君与小伙伴一起翻译的《Think Python 2e》电子版

    回复关键词「书单02」,立即获取主页君整理的 10 本 Python 入门书的电子版

    回复关键词book 数字」,将数字替换成 0 及以上数字,有惊喜好礼哦~

    推荐阅读

    • 你有一份代码审查问题清单,请查收

    • 电子书 | Python 爬虫技术升级必备

    • 深度!Python 解析 XML 数据的正确姿势

    • O'Reilly又出了一本免费的新书!关于深度学习首选这一本

    题图:pexels,CC0 授权。

    0e7de45ee94f968f31ef069b41a81bb0.png

    展开全文
  • 作者:刘早起 来源:早起Python(公众号)如果你经常使用Python进行数据分析,那么对于pandas一定不会陌生,但是Pandas除了在数据处理上大放异彩,随着版本的不断更新,Pandas的绘图功能在某些情况下甚至要比...

    a1ad06f2b78b8b39b1693fe3f9c432b2.png

    作者:刘早起

    来源:早起Python(公众号)

    如果你经常使用Python进行数据分析,那么对于pandas一定不会陌生,但是Pandas除了在数据处理上大放异彩,随着版本的不断更新,Pandas的绘图功能在某些情况下甚至要比matplotlib更加适用,本文就将介绍如何用Pandas更快的进行数据可视化!

    基本使用,学会制作套路

    首先我们使用pandas随机生成示例数据

    import pandas as pd
    df= pd.DataFrame(np.random.rand(8, 4), columns=['A','B','C','D'])

    7a46812d96507dc6adb85ea0a62d9d29.png

    现在只要一行代码,即可完成柱状图的绘制df.plot.bar()

    ae6d833975fc4581b4aaff139bd84b6e.png

    同样是这个图,如果使用Matplotlib制作的话

    import matplotlib.pyplot as plt
    
    x = np.array(df.index.tolist())
    y1 = df.A.tolist()
    y2 = df.B.tolist()
    y3 = df.C.tolist()
    y4 = df.D.tolist()
    y5 = df.E.tolist()
    
    total_width, n = 0.8, 5
    width = total_width / n
    x = x - (total_width - width) / 2
    
    plt.bar(x, y1,  width=width, label='A')
    plt.bar(x + width, y2, width=width, label='B')
    plt.bar(x + 2*width, y3, width=width, label='C')
    plt.bar(x + 3*width, y4, width=width, label='D')
    plt.bar(x + 4*width, y5, width=width, label='E')
    
    plt.legend()
    plt.show()

    71d990f317c596724f2dc3e92ff5112a.png

    可以看到,虽然结果差不多,不过代码量瞬间就上去了,如果你是Matplotlib高手可能会用更简洁的代码制作,但一定没有pandas一行代码来的方便!

    更多图表,一览Pandas强大

    下面我们继续看看,一行pandas代码能做出哪些常用的图!

    堆叠柱状图,添加一个参数即可df.plot.barh(stacked=True)

    3753f302c434b91d92bc391814a18c93.png

    堆叠面积图df.plot.area(stacked=True,alpha = 0.9)

    bdcfd3b7a843626f0841a9ded3960b48.png

    密度估计图df.plot.kde()

    9e72638b166af39fc4922f9159b9d183.png

    直方图的话,我们需要换一组数据

    df = pd.DataFrame({'a': np.random.randn(1000) + 1,
                       'b': np.random.randn(1000),
                       'c': np.random.randn(1000) - 1},
                      columns=['a', 'b', 'c'])

    下面,两行代码就能制作堆叠/不堆叠的直方图

    df.plot.hist(stacked=True, bins=20)
    df.plot.hist(alpha=0.5)

    96c9e9e12e6a541f6118418a6ac8aa25.png

    ebe8c6334e0746ca66b193c8dec8021f.png

    当然包括什么箱线图、散点图等常用图形,都可以通过一行代码轻松搞定

    df.plot.box()
    df['value'].plot()
    df.plot.scatter()
    data.plot.hexbin(x='A',y='B')

    65cfe5e31896919081586f30c9b8fce7.png

    制作子图可以吗? 只需要设置subplots=True就行了,子图位置、大小调整方式和Matplotlib设置一样!

    data.plot(subplots=True,layout=(3, 2), figsize=(15, 8));

    0b0a52e16e87629e60a17a2f4c6f0d40.png

    更多的图表,本文就不再一一展示,从官方文档中可以看到(我的版本是0.23.4),Pandas一共支持14种常见图表的直接绘制,感兴趣的读者可以进一步阅读官方文档!

    其实对图片敏感的读者可以发现,这不就是基于Matplotlib做出来的吗?所以它支持像调整Matplotlib图表一样,在作图时修改一些参数来控制图片的大小、图例、颜色、位置等因素。

    修改主题,解锁酷炫样式

    最后,如果你觉得默认生成的图表不够好看(我是这么觉得),而它又是基于Matoplotlib制作的,所以我们可以使用同样套着Matplotlib壳的Seaborn调色板,从而调整图片主题。

    还是上面的数据,下面让我们换个主题重新绘制

    import seaborn as sns
    sns.set_palette("pastel", 8)

    c9da2bd4c965c11da2a275c54a03cf55.png
    import seaborn as sns
    sns.set_palette("Blues_r", 8)

    a490aac5fe567fc9147403a364a34563.png
    import seaborn as sns
    sns.set_palette("magma", 8)

    a561be7152cc66f0510a29639a368505.png

    上面是我常用的几种配色,更多的颜色搭配你可以在seaborn相关文档中找到并使用!

    以上就是关于如何在使用Python更快速的对数据进行可视化,我们可以发现,在很多情况下,使用Pandas直接进行绘图会显得更加高效便捷

    但本文的目的并不是让你彻底放弃Matplotlib,在使用pandas绘图时很多参数设置都需要参考Matplotlib,所以我们应该在点亮这项技能后,能根数据和场景的不同,选择一个最合适的工具来完成可视化

    展开全文
  • (由Python大本营付费下载自视觉中国)文 | Lukas Frei译 | EarlGrey来源 |编程派(ID: codingpy)引言在第次导入新数据集时,我们首先要做的是了解数据。这包括确定特定预测变量的范围,识别每个预测变量的数据类型...
  • 我们使用Pandas进行数据分析时,首先要先对数据集进行探索性数据分析(Exploratory data analysis),以便有个大体的了解,明确后续数据处理、分析方向,数据EDA大致包含如下内容:感知数据的直观表现 挖掘潜在的...
  • 本文列举了一些使用Python和Jupyter Notebook的技巧,讨论了如何轻松分析数据以及如何进行格式化编码、输出...1. 分析Pandas数据框架Profiling(分析)是个帮助理解数据的过程,Pandas Profiling(数据预览分析)作为...
  • 数据科学爱好者 Parul Pandey 在近日发表了篇博文,分享了在数据科学中非常实用的 10 个小技巧。AI 科技评论将他的文章编译整理如下。有时候,一点小小的黑客行为可以节省时间,挽救生命。个小小的快捷方式或...
  • pandas如何快速添加一行

    千次阅读 2019-02-22 22:58:32
    pandas添加一行数据 pandas添加一列很容易,添加行稍微麻烦一点。 方式一: df2=pd.DataFrame([[33,44,55]],columns=['a','b','c']) df1 a b c 0 1 4 7 1 2 5 8 2 3 6 9 df2=pd.DataFrame([[33,44,55]],...
  • pandas 快速添加一行数据

    万次阅读 2018-11-07 13:56:06
    文章内容有参考这篇,... 第一种方式,直接插入一行: import pandas as pd from pandas import DataFrame df3=DataFrame(np.arange(16).reshape((4,4)),index=['a','b','...
  • pandas DataFrame添加一行

    千次阅读 2020-04-12 15:47:38
    I understand that pandas is designed to load fully populated DataFrame but I need to create an empt
  • 但是,当我们想向已创建的DataFrame添加时,可以通过诸如append之类的内置方法来实现,该方法会将其添加到DataFrame的末尾。在本文中,我们将找到一些方法,使用一些涉及DataFrame中元素索引的技巧,将新Da...
  • Pandas的DataFrame中添加一行或者一列,添加行有df.loc[]以及df.append()这两种方法,添加列有df[]和df.insert()两种方法, 下面对这几种方法的使用进行简单介绍。一、添加行添加一行,采用loc[]方法# 构造一个空...
  • python实现在pandas.DataFrame添加一行实例如下所示:from pandas import *from random import *df = DataFrame(columns=('lib', 'qty1', 'qty2'))#生成空的pandas表for i in range(5):#插入一行df.loc[i] = ...
  • 创建 dfResults = pd.DataFrame(columns=['dNum','description','directory']) 然后迭代添加 dfResults.loc[i] = {'dNum': dNum, 'description': description,'directory':directory}
  • 下面小编就为大家分享一篇python实现在pandas.DataFrame添加一行,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • 我遇到的问题是向DataFrame添加一行会更改列的类型:>>> from pandas import DataFrame>>> df = DataFrame({'a' : range(10)}, dtype='i4')>>> dfa0 01 12 23 34 45 56 67 78 89 9[10 ...
  • python 学习语法之pandas添加行

    万次阅读 2017-08-25 17:16:55
    pandas打开csv文件,添加一行 没有直接插入行的方法,只能将csv文件上下分割,然后拼接 创建一个DataFrame准备插入csvdata中第2行与第3行之间,将csvdata分割为上下两段,利用append方法或者concat将它们拼接起来,...
  • 我有pandas数据框,由一些传感器读数组成,这些读数是经过段时间采集的,如下所示:diode1 diode2 diode3 diode4Time0.530 7 0 10 161.218 17 7 14 191.895 13 8 16 172.570 ...
  • @ Nasser的答案示例:>... import pandas as pd >>> df = pd.DataFrame(columns=['lib', 'qty1', 'qty2']) >>> for i in range(5): >>> df.loc[i] = [randint(-1,1) for n in range(3)...
  • pandas 数据框添加一行

    千次阅读 2019-08-10 22:49:09
  • python在pandas.DataFrame添加一行

    万次阅读 2017-06-02 17:34:31
    代码示例: from pandas import * from random import * df = DataFrame(columns=('lib', 'qty1', 'qty2'))#生成空的pandas...for i in range(5):#插入一行 df.loc[i] = [randint(-1,1) for n in range(3)] print df

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 457
精华内容 182
关键字:

pandas添加一行