> 随着需求复杂度提高,很多时候已经不能用 excel 自带功能实现了,不过 pandas 中许多概念与 excel 不谋而合 案例1 公司的销售系统功能不全,导出数据时只能把各个部门独立一个 Excel...,多个数据合并 这次我们需要用到3个包: - pandas 不用多说 - from pathlib import Path ,用于获取文件夹中文件的路径 - openpyxl 用于读取 Excel 文件所有的工作表...,加载 Excel 数据 - pd.concat(dfs) ,合并多个数据,pandas 自动进行索引对齐 > 关于 pathlib 的知识点,请关注公众号的入门必备系列文章 上面是普通的写法,这场景我倾向于使用推导式...- df['部门'] = f.stem ,pandas 中添加一列值是非常容易。...因为推导式只适合一行连续调用的写法,当然这里还是可以使用推导式实现的: - DataFrame.assign(部门=f.stem) 是一个添加列并且返回修改后的数据的方法,特别适合这种场景下使用 >
而在pandas中,我们可以通过将列名列表传递给DataFrame来完成列选择 ?...在pandas中使用DataFrame.assign()同样可以完成这个操作 ?...例如,通过对性别进行分组查询 SELECT sex, count(*) FROM tips GROUP BY sex; ? 在pandas中的等价操作为 ?...六、连接 在pandas可以使用join()或merge()进行连接,每种方法都有参数,可让指定要执行的联接类型(LEFT,RIGHT,INNER,FULL)或要联接的列。...七、合并 SQL中UNION操作用于合并两个或多个SELECT语句的结果集,UNION与UNION ALL类似,但是UNION将删除重复的行。
SELECT '总费用', '小费', '是否吸烟', '吃饭时间' FROM df LIMIT 5; 对于pandas,通过将列名列表传递给DataFrame来完成列选择。...在SQL中,您可以添加一个计算列: SELECT *, "小费"/"总费用" as "小费占比" FROM df LIMIT 5; 对于pandas,可以使用DataFrame.assign()的方法追加新列...就像SQL的OR和AND一样,可以使用|将多个条件传递给DataFrame。|(OR)和&(AND)。...注意,在pandas代码中我们使用了size()而不是count()。这是因为count()将函数应用于每一列,并返回每一列中的记录数。...通过将一列列传递给方法,来完成按多个列分组groupby()。
图解Pandas的宝藏函数assign 本文介绍的是Pandas库中一个非常有用的函数:assign。...Pandas文章 本文是Pandas文章连载系列的第21篇,主要分为3类: 基础部分:1-16篇,主要是介绍Pandas中基础和常用操作,比如数据创建、检索查询、排名排序、缺失值/重复值处理等常见的数据处理操作...进阶部分:第17篇开始讲解Pandas中的高级操作方法 对比SQL,学习Pandas:将SQL和Pandas的操作对比起来进行学习 参数 assign函数的参数只有一个:DataFrame.assign...: right; } col1 col2 0 12 xiaoming 1 16 peter 2 18 mike 在Python3.6+中,我们可以在同一个赋值中创建多个列...BMI 总结 通过上面的例子,我们发现: 使用assign函数生成的DataFrame是不会改变原来的数据,这个DataFrame是新的 assign函数能够同时操作多个列名,并且中间生成的列名能够直接使用
选取多个DataFrame列 # 用列表选取多个列 In[2]: movie = pd.read_csv('data/movie.csv') movie_actor_director...对列名进行排序 # 读取movie数据集 In[12]: movie = pd.read_csv('data/movie.csv') In[13]: movie.head() Out[13]: ?...duration 15 director_facebook_likes 102 dtype: int64 # 对这个...强行返回每列的值,必须填入缺失值。...在DataFrame上使用运算符 # college数据集的值既有数值也有对象,整数5不能与字符串相加 In[37]: college = pd.read_csv('data/college.csv'
对于采集的数据集如何做准备工作? 如何对整理好的数据做分析和建模? 模型的效果如何评估? 模型的结果如何应用? 一、业务理解, 要解决什么问题?...这份数据集包括18列,用于记录公司员工的相关信息。目标变量是status记录了两种状态,取值是ACTIVE和TERMINATED。其它列可以从后面代码里面了解。...同时,删除ID列,对目标变量列也进行编码处理。对整理好的数据集,进行可视化分析,以加深对数据进一步认知和理解。...我们使用决策树模型对训练数集重构模型。...针对新的的数据集,按着模型构建前的数据加工逻辑,做好数据处理后,然后利用构建好的模型对新数据集做预测,对预测的结果做应用。
它会返回pandas.Categorical,我们之前使用过pandas.cut,但没解释分类是如何工作的: In [41]: np.random.seed(12345) In [42]: draws...还有另一个transform方法,它与apply很像,但是对使用的函数有一定限制: 它可以产生向分组形状广播标量值 它可以产生一个和输入组形状相同的对象 它不能修改输入 来看一个简单的例子: In [75...首先,DataFrame.assign方法是一个df[k] = v形式的函数式的列分配方法。它不是就地修改对象,而是返回新的修改过的DataFrame。...在前面的例子中,我们不能使用load_data的结果,直到它被赋值给临时变量df。为了这么做,assign和许多其它pandas函数可以接收类似函数的参数,即可调用对象(callable)。...为了深入学习pandas的知识,我建议你学习官方文档,并阅读开发团队发布的更新文档。我们还邀请你加入pandas的开发工作:修改bug、创建新功能、完善文档。
参考链接: 遍历Pandas DataFrame中的行和列 有如下 Pandas DataFrame: import pandas as pd inp = [{'c1':10, 'c2':100}, {...但这并不能给我需要的答案,里面提到: for date, row in df.T.iteritems(): 要么 for row in df.iterrows(): 但是我不明白row对象是什么,以及我如何使用它...这不能保证在所有情况下都能正常工作。根据数据类型的不同,迭代器返回一个副本而不是一个视图,写入它将不起作用。...对于大量的列(> 255),返回常规元组。 第二种方案: apply 您也可以使用df.apply()遍历行并访问函数的多个列。...(c1=10, c2=100), Pandas(c1=11, c2=110), Pandas(c1=12, c2=120)] 全面的测试 我们测试了所有可用列: def iterfullA(d):
后来才发现,原来不是 Python 数据处理厉害,而是他有数据分析神器—— pandas 前言 排名功能在日常工作是比较常用的,学生成绩排名、Kpi 绩效排名等等,可能有些小伙伴不知道存在许多排名方式的...名次被占用,后面的人不能使用剩下的名次(注意第5个人的名次是4) - G列:中国式排名,基本原理与美国式排名一致,但是名次2和3没有被占用,因此后面的人得到名次2 - H列:平均排名,同排名组内求平均作为他们的统一排名...下面直接介绍 pandas 的实现 - J列:同上 一个方法打天下 pandas 中讲究简洁(简单直接,语义清晰),所有上面说的排名都是统一使用 rank 方法实现。...只是显示的名次是比较小,看来感觉好看一些而已" 那就用中国式排名就好了: 参数 method='dense',组内名次仍然取最小值,但是组内其余的名次仍然可以被后面的人使用 "是挺方便的,但是有时候名次是要结合多个科目的成绩而定...接着按照正常排名方式处理即可 - 从结果可以看到,前3人语文成绩一样的情况下,分别通过数学以及英文成绩作为排名依据。
错误1:获取和设置值特别慢 这不能说是谁的错,因为在 Pandas 中获取和设置值的方法实在太多了。 大部分时候,你必须只用索引找到一个值,或者只用值找到索引。...Modin 的作用更多的是作为一个插件而不是一个库来使用,因为它使用 Pandas 作为后备,不能单独使用。 Modin 的目标是悄悄地增强 Pandas,让你在不学习新库的情况下继续工作。...大多数人需要的唯一一行代码是 import modin.pandas as pd 来取代你正常的 import pandas as pd,但如果你想了解更多,请查看这里的文档(https://modin.readthedocs.io...错误3:让Pandas消耗内存来猜测数据类型 当你把数据导入到 DataFrame 中,没有特别告诉 Pandas 列和数据类型时,Pandas 会把整个数据集读到内存中,只是为了弄清数据类型而已。...例如,如果你有一列全是文本的数据,Pandas 会读取每一个值,看到它们都是字符串,并将该列的数据类型设置为 "string"。然后它对你的所有其他列重复这个过程。
(可在知识星球完美Excel社群中下载本文的Excel示例工作簿) Excel解决方案 为了解决这个问题,可以使用:查找或INDEX/MATCH公式。...使用XLOOKUP公式来解决这个问题,如下图所示,列F“购买物品”是我们希望从第二个表(下方的表)中得到的,列G显示了列F使用的公式。...尽管表2包含相同客户的多个条目,但出于演示目的,我们仅使用第一个条目的值。例如,对于Harry,我们想带入其购买的“Kill la Kill”。...最后,因为我们只想保留第一个值(如果有多个条目),所以我们通过从返回的列表中指定[0]来选择第一个元素。 让我们测试一下这个函数,似乎工作正常!...图3 公式完成,现在“向下拖动” 因为我们用代码做所有事情,而且没有GUI(图形化用户界面),所以我们不能简单地双击某个东西来“拖拽”公式。
有如下 Pandas DataFrame: import pandas as pd inp = [{'c1':10, 'c2':100}, {'c1':11,'c2':110}, {'c1':12,'c2...但这并不能给我需要的答案,里面提到: for date, row in df.T.iteritems(): 要么 for row in df.iterrows(): 但是我不明白row对象是什么,以及我如何使用它...这不能保证在所有情况下都能正常工作。根据数据类型的不同,迭代器返回一个副本而不是一个视图,写入它将不起作用。...对于大量的列(> 255),返回常规元组。 第二种方案: apply 您也可以使用df.apply()遍历行并访问函数的多个列。...(c1=10, c2=100), Pandas(c1=11, c2=110), Pandas(c1=12, c2=120)] ---- 全面的测试 我们测试了所有可用列: def iterfullA(d
日常工作中碰到的数据大都是 Excel 表格那种,称为结构化数据。程序语言要想用来协助日常工作,就需要有较强的结构化数据处理功能。...还有调试,你不可能一下子就把代码写对,Python 开发环境的调试功能本来就不太好,Pandas 又不是 Python 的原生内容,调试就更费劲。 这些麻烦还是题外的,也能克服一下。...关键问题在于,Pandas 就不是为结构化数据设计的,会有许多不能如你所愿而且非常费解的东西....= group.count() print(dept_num) 分组后再计数,这是常规思路,但结果有点尴尬: 部门人数,也就是每个分组的成员数量,只要有一列就行了,为什么出来这么多列,它像是对每一列都做了同样的动作...() print(dept_num) 这个结果就正常了: 不过,这个结果不再是二维的 DataFrame 了,而是个一维的 Series,它不能再继续应用 DataFrame 的方法了,又是“意想不到
在 Linux 上,要使剪贴板正常工作,必须安装其中一个命令行工具 xclip 或 xsel。 压缩 使用 pip install "pandas[compression]" 可安装。...只安装 BeautifulSoup4 将 不会 使 read_html() 正常工作。 强烈建议阅读 HTML 表格解析注意事项。它解释了关于上述三个库的安装和使用的问题。...在 Linux 上,要使剪贴板正常工作,您的系统必须安装其中一个 CLI 工具 xclip 或 xsel。 压缩 使用 pip install "pandas[compression]" 可以安装。...如何从现有列派生新列 如何计算摘要统计信息 如何重新设计表格布局 如何合并来自多个表的数据 如何轻松处理时间序列数据 如何操作文本数据 pandas 处理什么类型的数据...使用冒号指定你想选择所有行或列。 我对第 10 到 25 行和第 3 到 5 列感兴趣。
,就会代表多个维度。...它感觉不够Pythonic,尤其是在选择多个层次时。 这个方法无法同时过滤行和列,所以名字xs(代表 "cross-section")背后的原因并不完全清楚。它不能用于设置值。...这意味着你不能用它来实现df[:, 'population'],而不需要转置DataFrame(除非所有列都是相同的类型,否则会丢失类型)。...而且,尽管有所有的辅助函数,当一些棘手的Pandas函数返回列中的MultiIndex时,对初学者来说也会倍感厉害。...,后面每行的前四个字段包含了索引level(如果列中有多于一个level,你不能在 read_csv 中通过名字引用行级别,只能通过数字)。
数据质量分析的主要任务是检查原始数据中是否存在脏数据,脏数据一般是指不符合要求,以及不能直接进行相应分析的数据。...在常见的数据挖掘工作中,脏数据包括如下内容: 缺失值 异常值 不一致的值 重复数据及含有特殊符号(如#、¥、*)的数据 缺失值的处理分为删除存在缺失值的记录、对可能值进行插补和不处理。...作为一个统计量,均值的主要问题是对极端值很敏感。如果数据中存在极端值或者数据 是偏态分布的,那么均值就不能很好地度量数据的集中趋势。...代码清单3-5,计算两个列向量的相关系数 # -*- coding:utf-8 -*- # 釆用Spearman方法计算两个列向量的相关系数 import pandas as pd D = pd.DataFrame...D为Pandas的DataFrame或Series,代表着均值数据列,而error则 是误差列,此命令在y轴方向画出误差棒图;类似地,如果设置参数xerr = error,则在x轴 方向画出误差棒图。
('lemon.xlsx',sheet_name=['python','student'])#可以通过表单名同时指定多个 # df=pd.read_excel('lemon.xlsx',sheet_name...data=df.values#获取所有的数据,注意这里不能用head()方法哦~ print("获取到所有的值:\n{0}".format(data))#格式化输出 [ 复制代码...javascript:void(0); "复制代码") 具体结果是怎样的,同学们可以自己一个一个的去尝试,这个结果是非常有意思的,但是同时同学们也发现了,这个数据是一个二维矩阵,对于我们去做自动化测试,并不能很顺利的处理...,所以接下来,我们就会详细的讲解,如何来读取行号和列号以及每一行的内容 以及制定行列的内容。...important;">df=pd.read_excel('lemon.xlsx') test_data=[] for i in df.index.values:#获取行号的索引,并对其进行遍历:
虽然 Excel 工作簿可以包含多个工作表,但 pandas 的DataFrame是独立存在的。 Series Series 是表示DataFrame的一列的数据结构。...在 pandas 中,索引可以设置为一个(或多个)唯一值,就像在工作表中使用作为行标识符的列一样。与大多数电子表格不同,这些Index值实际上可以用于引用行。...虽然 Excel 工作簿可以包含多个工作表,但 pandas 的 DataFrame 是独立存在的。 Series Series 是代表 DataFrame 的一列的数据结构。...在 pandas 中,索引可以设置为一个(或多个)唯一值,这类似于在工作表中使用作为行标识符的列。与大多数电子表格不同,这些Index值实际上可以用于引用行。...虽然 Excel 工作簿可以包含多个工作表,但 pandas 的DataFrame存在独立于此。 Series Series 是表示DataFrame的一列的数据结构。
领取专属 10元无门槛券
手把手带您无忧上云