最近在处理数据的时候遇到一个需求,核心就是求取最大连续行为天数。类似需求在去年笔者刚接触pandas的时候也做过《利用Python统计连续登录N天或以上用户》,这里我们可以用同样的方法进行实现。 图1:案例数据 以上图中数据来算,我们可以看到从1月21日-1月26日空气质量连续污染持续了6天。 不过,在实际的数据处理中,我们的原始数据往往会较大,并不一定能直接看出来。 图2:akshare数据预览 由于我们只需要用到aqi,并按照国际标准进行优良与污染定级,这里简单做下数据处理如下:(后台直接回复0427获取的数据是处理后的数据哈) import pandas as 图7:辅助列值预览 我们可以发现,按照辅助列分组进行计数即可获得连续污染天数,如上红色标记区域。 图10:思路2的解法2小明哥结果 以上就是本次全部内容,其实我们在日常工作生活中还可能遇到类似场景如:计算用户连续登录天数、计算用户连续付费天数、计算南方梅雨季节连续下雨天数等等!
本文主要演示pandas中DataFrame对象corr()方法的用法,该方法用来计算DataFrame对象中所有列之间的相关系数(包括pearson相关系数、Kendall Tau相关系数和spearman >>> import numpy as np >>> import pandas as pd >>> df = pd.DataFrame({'A':np.random.randint(1, 100, 10 10 5 35 46 20 6 33 14 69 7 12 41 15 8 28 62 47 9 15 92 77 >>> df.corr() # pearson相关系数 0.560009 1.000000 0.014687 C 0.162105 0.014687 1.000000 >>> df.corr('kendall') # Kendall Tau相关系数
提供包括云服务器,云数据库在内的90+款云计算产品。打造一站式的云产品试用服务,助力开发者和企业零门槛上云。
今天讲讲pandas模块:获取某列的一些统计结果,包括最大/最小值/均值/标准方差等 Part 1:示例 ? 执行结果 ? Part 3:部分代码解读 ? statistic_value = df.describe(),对数值列进行统计计算,输出结果分类: 样本数目 均值 标准方差 最小值 25%位数 50%位数,即中位数 75%位数 最大值 df[["measure_value "]] = df[["measure_value"]].astype(float),对measure_value列进行数据类型转换 传送门 Python-科学计算-pandas-03-两列相乘 Python -科学计算-pandas-02-两列相减 Python-科学计算-pandas-01-df获取部分数据 文为原创作品,欢迎分享朋友圈 ----
我在进行数据处理的时候除了清洗筛选处理外还会涉及到统计计算处理,这里我们就来介绍一些常见的统计计算函数吧。 1. 对于Dataframe类型来说,每行对应一个统计指标,分别是总数、平均值、标准差、最小值、四分位(默认是25/50/75)和最大值。 ,除了描述统计里的这些统计维度外,我们还会用到其他一些统计计算,比如方差、众数等等。 统计计算 这里我们演示常见的统计计算函数方法,默认情况下都是按列统计,我们也可以指定按行,具体见下方演示 # 最大值 In [11]: df.max(numeric_only=True) Out[11 (默认是隔1行) 0 NaN 1 NaN 2 -0.055556 dtype: float64 除了上述这些函数外,以下几个函数我们也常用到 # 某列最大的前5行数据
标准pandas适用 - 仅使用1个CPU 即使计算机有多个CPU,也只有一个完全专用于您的计算。 而不是下边这种CPU使用,想要一个简单的方法来得到这样的东西: ? 并行Pandas适用 - 使用所有CPU Pandaral·lel 如何帮助解决这个问题? Pandaral·lel 的想法是将pandas计算分布在计算机上所有可用的CPU上,以显着提高速度。 请注意如果不想并行化计算,仍然可以使用经典apply方法。 也可以通过将显示每个工作CPU一个进度条progress_bar=True的initialize功能。 ? 并行应用进度条 并配有更复杂的情况下使用带有pandas DataFrame df,该数据帧的两列column1,column2和功能应用func: # Standard pandas apply df.groupby 4核上的标准与并行(越低越好) 除了df.groupby.col_name.rolling.apply速度仅增加x3.2因子之外,平均速度增加约x4因子,即使用过的计算机上的核心数。
1 import pandas as pd 2 import numpy as np 3 4 df = pd.DataFrame({ 5 'key1': [4, 5, 3, df.mean() 23 # 只统计数字列,默认忽略nan。 key1 NaN 36 key2 NaN 37 dtype: float64 38 ''' 39 # 计算单一列的均值 40 print('计算单一列的均值',df['key2']. mean()) 41 ''' 42 计算单一列的均值 3.0 43 ''' 44 45 df2 = pd.DataFrame({ 46 'key1': [1, 3, 5], 47 2 d 185 6 f 186 3 h 187 1 j 188 0 k 189 4 s 190 dtype: object 191 ''' 192 # 对某一列进行值的计数
统计运算非常常用。本文介绍Pandas中的统计运算函数,这些统计运算函数基本都可以见名知义,使用起来非常简单。 为了使数据简洁一点,只保留数据中的部分列和前100行,并设置“日期”为索引。 ? 读取的原始数据如上图,本文使用这些数据来介绍统计运算函数。 二、最大值和最小值 ? max(): 返回数据的最大值。 在Pandas中,数据的获取逻辑是“先列后行”,所以max()默认返回每一列的最大值,axis参数默认为0,如果将axis参数设置为1,则返回的结果是每一行的最大值,后面介绍的其他统计运算函数同理。 根据DataFrame的数据特点,每一列的数据属性相同,进行统计运算是有意义的,而每一行数据的数据属性不一定相同,进行统计计算一般没有实际意义,极少使用,所以本文也不进行举例。 假如Pandas提供的函数不满足我们的统计需求,还可以借助apply()函数自定义统计运算,后面的文章再继续介绍。
Python的科学计算及可视化 今天讲讲pandas模块 对Df的特定列或者行进行与自身或者常数的运算 Part 1:场景描述 ? ;对“value1”, “value2”的每个数+2 行操作:对1, 2行的每个数平方;对1, 2行的每个数-3 df_1 ? value1", "value2", "value3", "value4"]) print("\n", "df_1", "\n", df_1, "\n") print(type(df_1)) # 对某些列进行计算 lambda x: x+2 if x.name in ['value1', 'value2'] else x) print("\n", "df_2-列+2", "\n", df_2, "\n") # 对某些行进行计算 对列操作还是对行操作,根据axis=1这个参数,默认取0 0,对列进行操作 1,对行进行操作 df_2 = df_1.apply(lambda x: np.square(x) if x.name in
下面主要给你讲下Series和 DataFrame这两个核心数据结构,他们分别代表着一维的序列和二维的表结构。基于这两种数据结构,Pandas可以对数据进行导入、清洗、处理、统计和输出。 数据统计 在数据清洗后,我们就要对数据进行统计了。 Pandas和NumPy一样,都有常用的统计函数,如果遇到空值NaN,会自动排除。 常用的统计函数包括: ? 表格中有一个describe()函数,统计函数千千万,describe()函数最简便。它是个统计大礼包,可以快速让我们对数据有个全面的了解。 argument_list是参数列表,expression是关于参数的表达式,会根据expression表达式计算结果进行输出返回。 我重点介绍了数据清洗中的操作,当然Pandas中同样提供了多种数据统计的函数。 最后我们介绍了如何将数据表进行合并,以及在Pandas中使用SQL对数据表更方便地进行操作。
利用Python进行数据分析(9) pandas基础: 汇总统计和计算 pandas 对象拥有一些常用的数学和统计方法。 例如,sum() 方法,进行列小计: ? sum() 方法传入 axis=1 指定为横向汇总,即行小计: ? idxmax() 获取最大值对应的索引: ? 还有一种汇总是累计型的,cumsum(),比较它和 sum() 的区别: ? unique() 方法用于返回数据里的唯一值 ? value_counts() 方法用于统计各值出现的频率 ? isin() 方法用于判断成员资格 ?
系统:Windows 7 语言版本:Anaconda3-4.3.0.1-Windows-x86_64 编辑器:pycharm-community-2016.3.2 pandas:0.19.2 这个系列讲讲 Python的科学计算及可视化 今天讲讲pandas模块 将Df按行按列进行转换 Part 1:目标 最近在网站开发过程中,需要将后端的Df数据,渲染到前端的Datatables,前端识别的数据格式有以下特征 - 数据格式为一个列表 - 列表中每一个元素为一个字典,每个字典对应前端表格的一行 - 单个字典的键为前端表格的列名,字典的值为前端表格每列取的值 简单来说就是要将一个Df转换为一个列表,该列表有特定的格式 Part 2:代码 import pandas as pd dict_1 = {"time": ["2019-11-02", "2019-11-03", "2019-11-04", "2019-11- 表示记录,对应数据库的行 Part 4:延伸 以上方法将Df按行转换,那么是否可以按列进行转换呢?
而Scipy(会在接下来的帖子中提及)当然是另一个主要的也十分出色的科学计算库,但是我认为前三者才是真正的Python科学计算的支柱。 所以,不需要太多精力,让我们马上开始Python科学计算系列的第三帖——Pandas。如果你还没有查看其他帖子,不要忘了去看一下哦! 导入Pandas 我们首先要导入我们的演出明星——Pandas。 Pandas非常智能,所以你可以省略这一关键字。 将你的数据准备好以进行挖掘和分析 现在我们已经将数据导入了Pandas。 在Pandas中,一个条目等同于一行,所以我们可以通过len方法获取数据的行数,即条目数。 ? 这将给你一个整数告诉你数据的行数。在我的数据集中,我有33行。 此外,你可能需要知道你数据的一些基本的统计信息。Pandas让这件事变得非常简单。 ? 这将返回一个包含多种统计信息的表格,例如,计数,均值,标准方差等。它看起来像这样: ?
Python的科学计算及可视化 今天讲讲pandas模块 计算Dataframe某一列的和、均值、最大值、最小值、样本标准方差 Part 1:背景 ? ]} df_1 = pd.DataFrame(dict_1, columns=["time", "pos", "value1", "value2"]) print(df_1, "\n") # 单列计算 运行结果 ? Part 3:部分代码解读 ? 求单列的和df_1["value1"].sum(),基本格式df[列名].计算函数() 和:sum 均值:mean 最大值:max 最小值:min 样本标准方差:std,注意是样本标准方差,对应(n-1 ),不是总体标准方差 Ps:根据pos列可以将value1进行分组,那么对应每一组的计算值又如何实现?
大多数Dask API与Pandas相同,但是Dask可以在所有CPU内核上并行运行。它甚至可以在集群上运行,但这是另一个话题。 今天你将看到Dask在处理20GB CSV文件时比Pandas快多少。 处理单个CSV文件 目标:读取一个单独的CSV文件,分组的值按月,并计算每个列的总和。 用Pandas加载单个CSV文件再简单不过了。 处理多个CSV文件 目标:读取所有CSV文件,按年值分组,并计算每列的总和。 使用Pandas处理多个数据文件是一项乏味的任务。简而言之,你必须一个一个地阅读文件,然后把它们垂直地叠起来。 结论 今天,您学习了如何从Pandas切换到Dask,以及当数据集变大时为什么应该这样做。Dask的API与Pandas是99%相同的,所以你应该不会有任何切换困难。 请记住—有些数据格式在Dask中是不支持的—例如XLS、Zip和GZ。此外,排序操作也不受支持,因为它不方便并行执行。
python 分布式计算 # -*- coding:utf-8 -*- # /usr/bin/python ''' ------------------------------------------- Functions : Envs : python == 3.6 pip install modin pandas ray
>>> import pandas as pd >>> import numpy as np # 生成模拟数据 >>> df = pd.DataFrame({'a':np.random.randint( 53 28 2 18 87 3 56 40 4 62 34 5 74 10 6 7 78 7 58 79 8 66 80 9 30 21 # 纵向一阶差分,当前行减去上一行
0.69 0.89 0.17 c 0.94 0.33 0.04 d 0.35 0.46 0.29 常用的统计计算 sum, mean, max, min… axis=0 按列统计,axis=1按行统计 skipna 排除缺失值, 默认为True 示例代码: pd2.sum() #默认把这一列的Series计算,所有行求和 pd2.sum(axis='columns') #指定求每一行的所有列的和 pd2.idxmax()#查看每一列所有行的最大值所在的标签索引,同样我们也可以通过axis='columns'求每一行所有列的最大值的标签索引 常用的统计描述 describe 产生多个统计数据 示例代码: pd2.describe()#查看汇总 运行结果: A B C count c 0.362319 -0.629213 -0.764706 d -0.627660 0.393939 6.250000 常用的统计描述方法
Pandas-14.统计函数 pct_change() Series,DataFrame和Panel都有pct_change()函数 将每个元素和前一个元素进行比较,计算变化百分比 默认列操作,通过axis = 1参数换成行 s = pd.Series([1,2,3,4,5,6,7]) print(s.pct_change()) ''' 0 NaN 1 1.000000 2 0.500000 cov()方法来计算Series之间的协方差 NAN自动被排除 用于DataFrame时,计算所有列之间的协方差(cov)值 s1 = pd.Series(np.random.randn(10)) s2 0.021553 e -0.054498 0.035249 -0.073178 0.021553 0.957176 ''' 相关性 相关性显示了任何两个Series之间的线性关系 有多种方法计算 数据排名为元素数组中的每个元素生成排名 在相同的情况下,分配平均等级。
系统:Windows 7 语言版本:Anaconda3-4.3.0.1-Windows-x86_64 编辑器:pycharm-community-2016.3.2 pandas:0.19.2 这个系列讲讲 Python的科学计算及可视化 今天讲讲pandas模块 从Dataframe获取特定的行或者列数据,生成一个列表 Part 1:目标 ? 已知一个Df,如下图 包括3列["time", "pos", "value1"] 包括8行[0,1,2,3,4,5,6,7] 输出 获取["time", "pos", "value1"]任意一列数据,输出为列表 获取第0行数据 Df ? 运行结果 ? Part 3:部分代码解读 ?
---- loc import pandas food_info = pandas.read_csv("food_info.csv") # loc[i] 获取第i行的数据 结果为字典 food_info.loc ---- 列的算术运算 import pandas import numpy food_info = pandas.read_csv("food_info.csv") iron_mg = food_info () # 此列的每一行数据均加上100 add_100 = iron_mg + 100 print(add_100[0:3]) print() # 此列的每一行数据均减去50 sub_100 = iron_mg import pandas food_info = pandas.read_csv("food_info.csv") # 它将算术运算符应用于两列中的第一个值,两列中的第二个值,依此类推 print( ---- sort_values import pandas food_info = pandas.read_csv("food_info.csv") # 默认情况下,panda将按照我们按升序指定的列对数据进行排序
机密计算平台是一款基于机密计算技术实现的高安全性、低接入门槛的安全计算平台。
扫码关注云+社区
领取腾讯云代金券