“软件工程师阅读教科书作为参考时不会记住所有的东西,但是要知道如何快速查找重·要的知识点。” ? 为了能够快速查找和使用功能,使我们在进行机器学习模型时能够达到一定流程化。...df.tail(3) # Last 3 rows of the DataFrame ? 添加或插入行 要向DataFrame追加或添加一行,我们将新行创建为Series并使用append()方法。...选择 在训练机器学习模型时,我们需要将列中的值放入X和y变量中。...这是一个简单的概念,但却是我们经常使用的极有价值的技术。Groupby的概念很重要,因为它能够有效地聚合数据,无论是在性能上还是在代码数量上都非常出色。...我们将调用pivot_table()函数并设置以下参数: index设置为 'Sex',因为这是来自df的列,我们希望在每一行中出现一个唯一的值 values值为'Physics','Chemistry
# 查看df类型 type(df) # 查看df的shape属性,可以获取DataFrame的行数,列数 df.shape # 查看df的columns属性,获取DataFrame中的列名 df.columns...df按行加载部分数据:先打印前5行数据 观察第一列 print(df.head()) 最左边一列是行号,也就是DataFrame的行索引 Pandas默认使用行号作为行索引。...loc方法传入行索引,来获取DataFrame的部分数据(一行,或多行) df.loc[0] df.loc[99] df.loc[last_row_index] iloc : 通过行号获取行数据 iloc...Series的唯一值计数 # 可以使用 value_counts 方法来获取Pandas Series 的频数统计 df.groupby(‘continent’) → dataframeGroupby...对象就是把continent取值相同的数据放到一组中 df.groupby(‘continent’)[字段] → seriesGroupby对象 从分号组的Dataframe数据中筛序出一列 df.groupby
header:表示指定文件中的哪一行数据作为DataFrame类对象的列索引,默认为0,即第一行数据作为列索引。...缺失值的常见处理方式有三种:删除缺失值、填充缺失值和插补缺失值,pandas中为每种处理方式均提供了相应的方法。...lsuffix: 左DataFrame中重复列的后缀 rsuffix: 右DataFrame中重复列的后缀 sort: 按字典序对结果在连接键上排序 join方式为按某个相同列进行join: score_df...; pd.concat()通过axis参数指定在水平还是垂直方向拼接; df.append()在DataFrame的末尾添加一行或多行;大致等价于pd.concat([df1,df2],axis=0...dropna:表示是否删除结果对象中存在缺失值的一行数据,默认为True。 同时还有一个stack的逆操作,unstack。
去除 NaN 值 在Pandas的各类数据Series和DataFrame里字段值为NaN的为缺失数据,不代表0而是说没有赋值数据,类似于python中的None值。...dropna() 删除NaN 值 可以通过 dropna 方法,默认按行扫描(操作),会将每一行有NaN 值的那一行删除,同时默认是对原对象的副本操作,不会对原对象产生影响,也可以通过inplace 指示是否直接在原对象上操作...fillna() fillna 方法可以将df 中的nan 值按需求填充成某值 # 将NaN值用0填充 df.fillna(0,inplace = True) # inplace 指明在原对象上直接修改...复杂的 使用向前 或 向后 填充数据,依旧使用fillna 方法,所谓向前 是指 取出现NaN值的前一列或前一行的数据来填充NaN值,向后同理 # 在df 的e 这一列上操作,默认下按行操作,向前填充数据...interpolate() 利用插值函数interpolate()对列向的数据进行填值。实现插值填充数据,那么要求这列上必须得有一些数据才可以,至少2个,会对起点和终点间的NaN进行插值。
虽然 fillna 在最简单的情况下工作得很好,但只要数据中的组或数据顺序变得相关,它就会出现问题。本文将讨论解决这些更复杂情况的技术。...不幸的是,在收集数据的过程中,有些数据丢失了。...按年龄、性别分组的体重 KDE 用各组的平均值代替缺失值 当顺序相关时,处理丢失的数据 ?...对一些国家来说,你缺失了最初几年、最后几年或者中间几年的数据。当然,你可以忽略它们。不过,为了可视化,你可能想要填充这些数据。 插值:看时间序列数据插值,你会发现排序变得非常相关。...fill_missing 函数在末尾和开头进行插值和外推,结果是: ?
,:] # 返回第一行 df.iloc[0,0] # 返回第一列的第一个元素 df.loc[0,:] # 返回第一行(索引为默认的数字时,用法同df.iloc),但需要注意的是loc是按索引,iloc参数只接受数字参数...)] # 选取col_name1等于value1,并且col_name2在value_list中的数据 df.loc[df[‘col_name’] !...(col) # 返回一个按列col进行分组的Groupby对象 df.groupby([col1,col2]) # 返回一个按多列进行分组的Groupby对象 df.groupby(col1)[col2...=[col2,col3], aggfunc={col2:max,col3:[ma,min]}) # 创建一个按列col1进行分组,计算col2的最大值和col3的最大值、最小值的数据透视表 df.groupby...) # 对DataFrame中的每一列应用函数np.mean data.apply(np.max,axis=1) # 对DataFrame中的每一行应用函数np.max df.groupby(col1)
您可以在pandas文档中查看它们。 4.2.3 按组进行过滤 GroupBy 对象的另一个常见用途是按组过滤数据。...我们将: 对数据框进行排序,使行按%的降序排列 按Party分组并选择每个子数据框的第一行 虽然这可能看起来不直观,但按%的降序对elections进行排序非常有帮助。...然后,如果我们按Party分组,每个 groupby 对象的第一行将包含有关具有最高选民%的Candidate的信息。...在我们讨论连接时,我们提到了使用“键”来确定应该从每个表中合并哪些行的想法。让我们花点时间更仔细地研究这个想法。 主键是表中唯一确定其余列值的列或列集。它可以被认为是表中每一行的唯一标识符。...8 总结 我们在本讲座中涵盖了很多内容;让我们总结一下最重要的要点: 8.1 处理缺失值 我们可以采取几种方法来处理缺失数据: 删除缺失记录 保留NaN缺失值 使用插值列进行插补 8.2
数据框(Dataframe)作为一种十分标准的数据结构,是数据分析中最常用的数据结构,在Python和R中各有对数据框的不同定义和操作。...细心的你会发现虽然我们成功得到了一个数据框按行的随即全排列,但是每一行的行index却依然和打乱前对应的行保持一致,如果我们利用行标号进行遍历循环,那么实际得到的每行和打乱之前没什么区别,因此下面引入一个新的方法...7.数据框的条件筛选 在日常数据分析的工作中,经常会遇到要抽取具有某些限定条件的样本来进行分析,在SQL中我们可以使用Select语句来选择,而在pandas中,也有几种相类似的方法: 方法1: A =...12.缺失值的处理 常用的处理数据框中缺失值的方法如下: df.dropna():删去含有缺失值的行 df.fillna():以自定义的方式填充数据框中的缺失位置,参数value控制往空缺位置填充的值,...method控制插值的方式,默认为'ffill',即用上面最近的非缺省值来填充下面的缺失值位置 df.isnull():生成与原数据框形状相同的数据框,数据框中元素为判断每一个位置是否为缺失值返回的bool
(1)官网: Python Data Analysis Library (2)十分钟入门Pandas: 10 Minutes to pandas 在第一次学习Pandas的过程中,你会发现你需要记忆很多的函数和方法...']:按索引选取数据 df.iloc[0,:]:返回第一行 df.iloc[0,0]:返回第一列的第一个元素 数据清理 df.columns = ['a','b','c']:重命名列名 pd.isnull...,后按col2降序排列数据 df.groupby(col):返回一个按列col进行分组的Groupby对象 df.groupby([col1,col2]):返回一个按多列进行分组的Groupby对象 df.groupby...col1进行分组,并计算col2和col3的最大值的数据透视表 df.groupby(col1).agg(np.mean):返回按列col1分组的所有列的均值 data.apply(np.mean):对...DataFrame中的每一列应用函数np.mean data.apply(np.max,axis=1):对DataFrame中的每一行应用函数np.max 数据合并 df1.append(df2):将df2
一个订单会包含很多明细项,表中每个样本(每一行)表示一个明细项 order_id 列存在重复 quantity 是明细项数量 请找出数量最多的明细项(并列最多,全部列出),要求列出其所有信息(上表中的列...上面的结果只能是"找出数据中,数量最多的行" 因此,我们应该这样做: ( df.groupby(['item_name']) .agg({'quantity': sum,}) .....sort_values( 'quantity', ascending=False) .head(1) ) 行4:按数量倒序(ascending=False)排序 行5:取第一行 那么,这种方式下...把数量为最大值的行保留即可: res = ( df.groupby(['item_name']) .agg({'quantity': sum,}) .sort_values(...在 JupyterNotebook中这几招很有用
Timestamp或str类型,当为str时: epoch:1970-01-01 start:时间序列的第一个值 start_day:时间序列第一天的午夜 end:时间序列的最后一个值 end_day:...groupby和窗口的聚合方法, 重采样也适用相关方法,参考pandas分组8个常用技巧!...以上可以看到,上采样的过程中由于频率更高导致采样后数据部分缺失。这时候可以使用上采样的填充方法,方法如下: 1)ffill 只有一个参数limit控制向前填充的数量。...具体方法可通过参数method设置,不详细介绍,这里以linear线性插值方法举例。...通过pipe的链式可以像管道一样按顺序依次执行操作,并且只需要一行代码即可,极大地提高了可读性。 以下对下采样后的C_0和C_1变量进行累加求和操作,然后再对两个求和作差。
、处理缺失值、填充默认值、补全格式、处理极端值等; 建立高效的索引; 支持大体量数据; 按一定业务逻辑插入计算后的列、删除列; 灵活方便的数据查询、筛选; 分组聚合数据,可独立指定分组后的各字段计算方式...表1 team.xlsx的部分内容 ? 这是一个学生各季度成绩总表(节选),各列说明如下。 name:学生的姓名,这列没有重复值,一个学生一行,即一条数据,共100条。...# 如果是CSV,使用pd.read_csv(),还支持很多类型的数据读取 这样就把数据读取到变量df中,输入df看一下内容,在Jupyter Notebook中的执行效果如图2所示。...: df.groupby('team').sum() # 按团队分组对应列相加 df.groupby('team').mean() # 按团队分组对应列求平均 # 不同列不同的计算方法 df.groupby...df.mean() # 返回所有列的均值 df.mean(1) # 返回所有行的均值,下同 df.corr() # 返回列与列之间的相关系数 df.count() # 返回每一列中的非空值的个数
df.iloc[0] # 按位置选取数据 df.loc['index_one'] # 按索引选取数据 df.iloc[0,:] # 返回第一行 df.iloc[0,0] # 返回第一列的第一个元素 数据统计...: df.describe() # 查看数据值列的汇总统计 df.mean() # 返回所有列的均值 df.corr() # 返回列与列之间的相关系数 df.count() # 返回每一列中的非空值的个数...=[True,False]) # 先按列col1升序排列,后按col2降序排列数据 df.groupby(col) # 返回一个按列col进行分组的Groupby对象 df.groupby([col1,...col2]) # 返回一个按多列进行分组的Groupby对象 df.groupby(col1)[col2] # 返回按列col1进行分组后,列col2的均值 df.pivot_table(index=col1..., values=[col2,col3], aggfunc=max) # 创建一个按列col1进行分组,并计算col2和col3的最大值的数据透视表 df.groupby(col1).agg(np.mean
今天,我就沿用上一节的数据,把需求升级一下,以解决上述的疑点。...不过这次我们需要把每个班级成绩好的同学给揪出来好好表扬,因此条件如下: 找出每个班级的top 3 学生,在原数据表中以绿色底色标记 找出每个班级中低于班级平均分的学生,在原数据表中以红色底色标记 上述条件均以...排名 首先需要解决的是怎么得到班级 top 3? 首要任务是得到排名,如下: 这里需要在数据中新增一列[排名] df.groupby('班级') 就是按 班级 分组的意思。...找出低水平学生 现在找出低于所在班级平均分的同学吧。 先按班级计算平均分,然后把平均分填到每一行上。 df.groupby('班级')['总分'] 就不用说了,与上面的排名是一样的意思。...给表格加点颜色 首先定义一个设置颜色的方法 indices=(n for n in arg_df.index) , 获得结果的索引值。
前面我们一直在讲解 pandas 数据处理的各种知识点,现在开始就应用上这些知识点来探索一下点餐数据。 本系列计划每天更新一期,希望各位小伙伴先自行思考,再查看答案。...一个订单会包含很多明细项,表中每个样本(每一行)表示一个明细项 order_id 列存在重复 item_name 是品类名称,例如"罐装饮料" quantity 是明细项数量 item_price 是该明细项的总价钱...说不定能搞一个"二次点餐优惠包",能进一步提升销量 下面是答案了 ---- 理解数据 在同一个订单中,重复出现的品类,被视为二次点餐。...('counts') .query('counts>1') ) 注意此时结果表只有一列(counts),item_name 是行索引 此时数据的一行表达的是,某品类在某订单中出现二次点餐。...使用我的小工具: 利用上一节的知识,做一个简单的条形图: ( df.groupby('order_id')['item_name'].value_counts() .to_frame(
最小-最大标准化(规范化) 最小-最大规范化:也称为离差标准化,是对原始数据的线性变换,使结果值映射到[0,1]之间。...基于列值重塑数据(生成一个“透视”表)。使用来自指定索引/列的唯一值来形成结果DataFrame的轴。此函数不支持数据聚合,多个值将导致列中的MultiIndex。...类对象的列索引转换为一行数据。...输出为: 查看DF的值: # 根据列表对df_obj进行分组,列表中相同元素对应的行会归为一组 groupby_obj = df_obj.groupby(by=['A', 'A', 'B', '...在使用agg方法中,还经常使用重置索引+重命名的方式: # 初始化分组DF import pandas as pd df_obj = pd.DataFrame({'a': [0, 1, 2, 3, 4
# 返回每一列中的非空值的个数 df.max() # 返回每一列的最大值 df.min() # 返回每一列的最小值 df.median() # 返回每一列的中位数 df.std() # 返回每一列的标准差...) data.apply(np.mean) # 对 DataFrame 中的每一列应用函数 np.mean data.apply(np.max,axis=1) # 对 DataFrame 中的每一行应用函数...']] # 按条件查询,只显示name 列 s.iloc[0] # 按位置选取数据 s.loc['index_one'] # 按索引选取数据 df.loc[0,'A':'B'] # A到 B 字段的第一行...col2]) # 返回一个按多列进行分组的Groupby对象 df.groupby(col1)[col2] # 返回按列col1进行分组后,列col2的均值 # 创建一个按列col1进行分组,并计算col2...Sub-Slide:副页面,通过按上下方向键进行切换。全屏 Fragment:一开始是隐藏的,按空格键或方向键后显示,实现动态效果。在一个页面 Skip:在幻灯片中不显示的单元。
更改名称 pd中的一个df一般会有两个位置有名称,一个是轴的名称(axis_name),一个是行或列的名称,两个名称可以在创建df时进行声明,也可以调用方法进行修改: df.rename_axis(str...#拉格朗日插值方法 from scipy.interpolate import lagrange #自定义列向量插值函数,s为列向量,n为被插值的位置,k为取前后的数据个数, 默认5 def ployinterp_columns...,分别返回各个类别的记录数量,即频次,并根据 sort 的值决定是否按频次排序。...窗口函数 在实际应用过程中,我们可能会存在对整个 df 的局部数据进行统计分析的场景,这时就需要用到所谓的“窗口函数”,可以理解为在整体数据集上创建窗口来进行运算,pd 中提供的几种窗口函数有: rolling...(移动函数) expanding(扩展函数) ewm(指数加权函数) 在数据分析的过程中,使用窗口函数能够提升数据的准确性,并且使数据曲线的变化趋势更加平滑,从而让数据分析变得更加准确、可靠。
我们现在想知道每家餐厅在城市中所占的销售百分比是多少。 预期输出为: 传统方法是:先groupby分组,结合apply计算分组求和,再用merge合并原表,然后再apply计算百分比。...首先,用transform结合groupby按城市分组计算销售总和。...仍用上个例子,我们希望获得城市总销售额超过40的记录,那么就可以这样使用。...1, np.nan, np.nan, 2, 8, 2, np.nan, 3] }) 在上面的示例中,数据可以按name分为三组A、B、C,每组都有缺失值。...我们知道替换缺失值的常见的方法是用mean替换NaN。下面是每个组中的平均值。
1.1按列分组 按列分组分为以下三种模式: 第一种: df.groupby(col),返回一个按列进行分组的groupby对象; 第二种: df.groupby([col1,col2]),返回一个按多列进行分组的...groupby对象; 第三种: df.groupby(col1)[col2]或者 df[col2].groupby(col1),两者含义相同,返回按列col1进行分组后col2的值; 首先生成一个表格型数据集...gg = df.groupby(df['key1']) gg 【例1】采用函数df.groupby(col),返回一个按列进行分组的groupby对象。...关键技术: df.groupby(col1)[col2]或者df[col2].groupby(col1),两者含义相同,返回按列col1进行分组后,col2的值。...,'mean']} df.groupby('Country').agg(df_age) 在我们对数据进行聚合的过程中,除了使用sum()、max ()等系统自带的聚合函数之外,大家也可以使用自己定义的函数
领取专属 10元无门槛券
手把手带您无忧上云