python中如何过滤log某几列的所有内容,并且把内容输出到excel上,并附带一个图表。该怎么写?

Excel在测量教学实习中的应——以闭合导线为例

Excel具有强大的数据计算处理功能,利它所包含的内置函数来处理测量观测数据,既避免了过程的复杂性,又能完整的体现计算原理,对于初次接触测量数据内业处理的学生来说,具有一定的优越性。文中以测量教学实习中的某...

}
  • 问一下大佬们,我用Python读取csv表格,然后对其中某两列进行操作: 1.数据>100的全部转换成1,否则全部转换成0。 2.将这两列转换之后的数据进行每一行相乘得到新的一列数据 #Python#

  • 在昨天的文章中,我们详细介绍了numpy,那么今天,我们就来详细了解一下它的另一个小伙伴“pandas”吧~ pandas 是基于numpy构建的,两个主要的数据结构是Series和DataFrame。 Series: Series是一种类似一维数组的对象。 处理缺失值:删除或者填充 DataFrame: DataFrame是一个表格型的数据结构,它含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔值等),可以看做Series组成的字典(共用一个索引)。 那么,进入正题:如何使用pyhton处理数据? 一

  • 在昨天的文章中,我们详细介绍了numpy,那么今天,我们就来详细了解一下它的另一个小伙伴“pandas”吧~ pandas 是基于numpy构建的,两个主要的数据结构是Series和DataFrame。 Series: Series是一种类似一维数组的对象。 处理缺失值:删除或者填充 DataFrame: DataFrame是一个表格型的数据结构,它含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔值等),可以看做Series组成的字典(共用一个索引)。 那么,进入正题:如何使用pyhton处理数据? 一

  • 首先了解使用python进行数据处理常用的两个包:numpy和pandas。 numpy 最重要的特点就是n维数组对象ndarray是一个快速而灵活的大数据集容器,它是一个通用的同构数据多维容器,即所有的元素必须是相同的类型,每个数组有一个shape(表示维度大小的元组),一个dtype(说明数组数据类型的对象)。 1.创建数组常使用的函数有:array,arange 例如:

  • 首先了解使用python进行数据处理常用的两个包:numpy和pandas。 numpy 最重要的特点就是n维数组对象ndarray是一个快速而灵活的大数据集容器,它是一个通用的同构数据多维容器,即所有的元素必须是相同的类型,每个数组有一个shape(表示维度大小的元组),一个dtype(说明数组数据类型的对象)。 1.创建数组常使用的函数有:array,arange 例如:

  • 1.谁适合本课程?想从零开始学会Python数据分析,抓住大数据、机器学习、人工智能时代的红利。2.你将从本次课程中学到什么?通过真实案例,从开始到结束,使用Numpy和Pandas了解整个数据分析过程。2)一维数据分析如何使用NumPy和Pandas分析一维数据?3)二维数据分析如何使用NumPy和Pandas分析二维数据?4)数据分析的基本过程是什么?5)如何清洗数据?6)如何分析数据?6)你将挑战的实战项目:如何用Python对销售数据进行分析?

}

通过带有标签的列和索引,Pandas 使我们可以以一种所有人都能理解的方式来处理数据。它可以让我们毫不费力地从诸如 csv 类型的文件中导入数据。我们可以用它快速地对数据进行复杂的转换和过滤等操作。

pandas和 Numpy、Matplotlib 一起构成了一个 Python 数据探索和分析的强大基础。Scipy是同类型的库,感兴趣的可以进行了解。

本文记录和收集积累pandas的用法。

这是导入 pandas 的标准方法。我们不想一直写 pandas 的全名,但是保证代码的简洁和避免命名冲突都很重要,所以折中使用 pd 。如果你去看别人使用 pandas 的代码,就会看到这种导入方式。

series 是一种一维的数据类型,其中的每个元素都有各自的标签。你可以把它当作一个由带标签的元素组成的 numpy 数组。标签可以是数字或者字符。 通俗的理解就是 带有标签的行 或者带有标签的列。

dataframe 是一个二维的、表格型的数据结构。Pandas 的 dataframe 可以储存许多不同类型的数据,并且每个轴都有标签。你可以把它当作一个 series 的字典。通俗的理解就是 行列带有标签的表格。

如果你的数据集中有中文的话,最好在里面加上 encoding = ‘gbk’ ,以避免乱码问题。后面的导出数据的时候也一样。

这里我们从 csv 文件里导入了数据,并储存在 dataframe 中。这一步非常简单,你只需要调用 read_csv 然后将文件的路径传进去就行了。header 关键字告诉 Pandas 哪些是数据的列名。如果没有列名的话就将它设定为 None 。

我们只需要调用 head() 函数并且将想要查看的行数传入。

跟 head 一样,我们只需要调用 tail 并且传入想要查看的行数即可。注意,它并不是从最后一行倒着显示的,而是按照数据原来的顺序显示。

在 Pandas 中,一条记录对应着一行,所以我们可以对数据集调用 len 方法,它将返回数据集的总行数:

上面的代码返回一个表示数据行数的整数

你可能还想知道数据集的一些基本的统计数据,在 Pandas 中,这个操作简单到哭:

这将返回一张表,其中有诸如总数、均值、标准差之类的统计数据:

使用列的标签可以非常简单地做到:

注意,当我们提取列的时候,会得到一个 series ,而不是 dataframe 。记得我们前面提到过,你可以把 dataframe 看作是一个 series 的字典,所以在抽取列的时候,我们就会得到一个 series。

访问对象属性一样访问数据集的列——只用一个点号。

这句代码返回的结果与前一个例子完全一样——是我们选择的那列数据。

pandas可以使用布尔过滤(boolean masking)的技术,通过在一个数组上运行条件来得到一个布林数组。

上面的代码将会返回一个由布尔值构成的 dataframe。True 表示在十月-九月降雨量小于 1000 mm,False 表示大于等于 1000 mm。

我们可以用这些条件表达式来过滤现有的 dataframe。

这条代码只返回十月-九月降雨量小于 1000 mm 的记录:

也可以通过复合条件表达式来进行过滤:

注意重要的一点:这里不能用 and 关键字,因为会引发操作顺序的问题。必须用 & 和圆括号。

和操作 使用&、或操作使用|、not操作使用 ~

如果你的数据是字符串,你也可以使用字符串方法来进行过滤:

注意,你必须用 .str.[string method] ,而不能直接在字符串上调用字符方法。上面的代码返回所有 90 年代的记录。

可以设置一个(或者多个)新的索引:

上面的代码将 water_year 列设置为索引。注意,列的名字实际上是一个列表,虽然上面的例子中只有一个元素。如果你想设置多个索引,只需要在列表中加入列的名字即可。

之前的部分展示了如何通过列操作来得到数据,但是 Pandas 的行也有标签。行标签可以是基于数字的或者是标签,而且获取行数据的方法也根据标签的类型各有不同。

如果你的行标签是数字型的,你可以通过 iloc 来引用:

iloc 只对数字型的标签有用。它会返回给定行的 series,行中的每一列都是返回 series 的一个元素。

我们设置的索引列中都是字符型数据,这意味着我们不能继续使用 iloc 来引用,那我们用什么呢?用 loc 。

和 iloc 一样,loc 会返回你查询的行,唯一一点不同就是此时你使用的是基于字符串的引用,而不是基于数字的。

还有一个引用列的常用常用方法—— ix 。如果 loc 是基于标签的,而 iloc 是基于数字的,那 ix 是基于什么的?事实上,ix 是基于标签的查询方法,但它同时也支持数字型索引作为备选。

与 iloc、loc 一样,它也会返回你查询的行。

如果 ix 可以同时起到 loc 和 iloc 的作用,那为什么还要用后两个?一大原因就是 ix 具有轻微的不可预测性。还记得我说过它所支持的数字型索引只是备选吗?这一特性可能会导致 ix 产生一些奇怪的结果,比如讲一个数字解释为一个位置。而使用 iloc 和 loc 会很安全、可预测并且让人放心。但是我要指出的是,ix 比 iloc 和 loc 要快一些。

通过传递的整数的位置进行选择:

切出3-4行,1-2列一块区域

通过整数位置列表切分,类似numpy的/ Python的风格:

快速访问某个值(等同于先前的方法):

根据A、B列分组,对C列进行求和:
根据A、B列分组,对C列进行计数:

当你将一列设置为索引的时候,它就不再是数据的一部分了。如果你想将索引恢复为数据,调用 set_index 相反的方法 reset_index 即可:

这一语句会将索引恢复成数据形式

有时你想对数据集中的数据进行改变或者某种操作。比方说,你有一列年份的数据,你需要新的一列来表示这些年份对应的年代。Pandas 中有两个非常有用的函数,apply 和 applymap。

上面的代码创建了一个叫做 year 的列,它只将 water_year 列中的年提取了出来。这就是 apply 的用法,即对一列数据应用函数。如果你想对整个数据集应用函数,就要使用 applymap 。

另一常见的做法是重新建立数据结构,使得数据集呈现出一种更方便并且(或者)有用的形式。

掌握这些转换最简单的方法就是观察转换的过程。

groupby 会按照你选择的列对数据集进行分组。上例是按照年代分组。不过仅仅这样做并没有什么用,我们必须对其调用函数,比如 max 、 min 、mean 等等。例中,我们可以得到 90 年代的均值。

你也可以按照多列进行分组:

接下来是 unstack ,它可以将一列数据设置为列标签。最好还是看看实际的操作:

这条语句将上例中的 dataframe 转换为下面的形式。它将第 0 列,也就是 year 列设置为列的标签。

让我们再操作一次。这次使用第 1 列,也就是 rain_octsep 列:

在进行操作之前,我们先创建一个用于演示的 dataframe :

我们将会在上面的代码产生的 dataframe里演示轴向旋转(pivoting)。

轴旋转其实就是我们之前已经看到的那些操作的一个集合。首先,它会设置一个新的索引(set_index()),然后对索引排序(sort_index()),最后调用 unstack 。以上的步骤合在一起就是 pivot 。接下来看看你能不能搞清楚下面的代码在干什么:

注意,最后有一个 .fillna(’’) 。pivot 产生了很多空的记录,也就是值为 NaN 的记录。 fillna(’’)填充数据 。你也可以用别的别的东西,比方说 0 。我们也可以使用 dropna(how = ‘any’) 来删除有 NaN 的行,不过这样就把所有的数据都删掉了,所以不这样做。

上面的 dataframe 展示了所有降雨超过 1250 的 outflow 。诚然,这并不是讲解 pivot 实际应用最好的例子,但希望你能明白它的意思。看看你能在你的数据集上得到什么结果。

有时你有两个相关联的数据集,你想将它们放在一起比较或者合并它们。好的,没问题,在 Pandas 里很简单:

首先你需要通过 on 关键字来指定需要合并的列。通常你可以省略这个参数,Pandas 将会自动选择要合并的列。

两个数据集在年份这一类上合并了。jpn_rain 数据集只有年份和降雨量两列,通过年份列合并之后,jpn_rain 中只有降雨量那一列合并到了 UK_rain 数据集中。

Matplotlib 很棒,但是想要绘制出还算不错的图表却要写不少代码,而有时你只是想粗略的做个图来探索下数据,搞清楚数据的含义。Pandas 通过 plot 来解决这个问题:

这会调用 Matplotlib 快速轻松地绘出了你的数据图。

在清洗、重塑、探索完数据之后,你最后的数据集可能会发生很大改变,并且比最开始的时候更有用。你应该保存原始的数据集,但是你同样应该保存处理之后的数据。

上面的代码将会保存你的数据到 csv 文件以便下次使用。

例子:查询bl.txt文件与ba.txt文件的数据是否一致对应

1、修改列名a,b为A、B。

注意:有的时候收到的csv文件的列名是中文的,想要修改列名就需要在字符串前面加上 u,而且需要df=df.rename,否则更改不会生效

pandas提供了将数据便捷存入关系型数据库的方法,在新版的pandas中,主要是已sqlalchemy方式与数据建立连接,支持MySQL、Postgresql、Oracle、MS SQLServer、SQLite等主流数据库。本例以MySQL数据库为代表,展示将获取到的股票数据存入数据库的方法,其他类型数据库请参考sqlalchemy官网文档的create_engine部分。

chunksize:分批存入数据库,默认是None,即一次性全部写人数据库

在pandas中进行列级别的分析很简单。下面是一些例子:

# df为需要筛选的数据框,col为选择非空依赖的列名
# df为需要筛选的数据框,col为选择空值的列名

采用drop方法,有下面三种等价的表达式:

设置axis=1(按列方向操作)、inplace=True(修改完数据,在原数据上保存)

注意:凡是会对原数组作出修改并返回一个新数组的,往往都有一个 inplace可选参数。如果手动设定为True(默认为False),那么原数组直接就被替换。也就是说,采用inplace=True之后,原数组名(如2和3情况所示)对应的内存值直接改变;而采用inplace=False之后,原数组名对应的内存值并不改变,需要将新的结果赋给一个新的数组或者覆盖原数组的内存位置(如1情况所示)

使用df.iloc函数,如下所示:


 
 # 转成天为单位 计算时间差
 
 

根据#account_id进行分组后,组内根据date_num进行由小到大排序,注意date_num需要是数值类型


一、ascending: 排序或者降序,默认为1,由小到大,ascending = 0意味着降序,即从大到小排序

二、method:遇到排序中值相同的情况,该如何排序,参数值 有’average’,‘min’,‘max’,‘first’,‘dense’,默认为’average’
如何对具有相同值(即ties)的记录组进行排名:
average:组的平均等级;
min:组中最低的排名;
max:组中最高等级;
first : 按排列顺序排列,依次排列;
dense:类似于 ‘min’,但组之间的排名始终提高1


}

我要回帖

更多关于 python怎样输出几个并列的值 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信