字符串函数,Series的lower()函数

Series在str属性中提供了一组字符串处理方法,可以方便地对数组中的每个元素进行操作,如下面的代码片段所示。请注意,str中的模式匹配通常默认使用正则表达式(在某些情况下总是使用正则表达式)

import numpy as np
import pandas as pds = pd.Series(['A', 'B', 'C', 'Aaba', 'Baca', np.nan, 'CABA', 'dog', 'cat'])
print(s.str.lower())

输出结果为:

0       a
1       b
2       c
3    aaba
4    baca
5     NaN
6    caba
7     dog
8     cat
dtype: object

数据合并

concat
import numpy as np
import pandas as pddf = pd.DataFrame(np.random.randn(10,4))
print(df)print("------------------------------------")
print(df[:3])
#pieces = [df[]]
print("------------------------------------")
print(df[3:7])
print("------------------------------------")
print(df[7:])pieces = [df[:3],df[3:7],df[7:]]
print("------------------------------------")
print(pieces)
print(pd.concat(pieces))

输出结果:

          0         1         2         3
0  1.190317  0.751029  1.628000 -0.923804
1  0.926196  1.644827 -1.005915 -0.153604
2 -1.082964 -0.684693 -0.087294  0.707919
3 -0.418695  2.392404  1.020161  0.928821
4  0.798035 -0.458987 -0.612861  0.589815
5  0.749647 -0.939293 -1.883342 -1.408095
6  0.045482  2.362426 -0.792240 -0.127324
7  0.881938 -1.667338 -0.147447  0.529441
8 -1.768780 -1.513335 -0.014616  0.373453
9 -0.553334 -0.066471 -0.367330 -0.815094
------------------------------------0         1         2         3
0  1.190317  0.751029  1.628000 -0.923804
1  0.926196  1.644827 -1.005915 -0.153604
2 -1.082964 -0.684693 -0.087294  0.707919
------------------------------------0         1         2         3
3 -0.418695  2.392404  1.020161  0.928821
4  0.798035 -0.458987 -0.612861  0.589815
5  0.749647 -0.939293 -1.883342 -1.408095
6  0.045482  2.362426 -0.792240 -0.127324
------------------------------------0         1         2         3
7  0.881938 -1.667338 -0.147447  0.529441
8 -1.768780 -1.513335 -0.014616  0.373453
9 -0.553334 -0.066471 -0.367330 -0.815094
------------------------------------
[          0         1         2         3
0  1.190317  0.751029  1.628000 -0.923804
1  0.926196  1.644827 -1.005915 -0.153604
2 -1.082964 -0.684693 -0.087294  0.707919,           0         1         2         3
3 -0.418695  2.392404  1.020161  0.928821
4  0.798035 -0.458987 -0.612861  0.589815
5  0.749647 -0.939293 -1.883342 -1.408095
6  0.045482  2.362426 -0.792240 -0.127324,           0         1         2         3
7  0.881938 -1.667338 -0.147447  0.529441
8 -1.768780 -1.513335 -0.014616  0.373453
9 -0.553334 -0.066471 -0.367330 -0.815094]0         1         2         3
0  1.190317  0.751029  1.628000 -0.923804
1  0.926196  1.644827 -1.005915 -0.153604
2 -1.082964 -0.684693 -0.087294  0.707919
3 -0.418695  2.392404  1.020161  0.928821
4  0.798035 -0.458987 -0.612861  0.589815
5  0.749647 -0.939293 -1.883342 -1.408095
6  0.045482  2.362426 -0.792240 -0.127324
7  0.881938 -1.667338 -0.147447  0.529441
8 -1.768780 -1.513335 -0.014616  0.373453
9 -0.553334 -0.066471 -0.367330 -0.815094

merge

import numpy as np
import pandas as pdleft = pd.DataFrame({'key': ['foo', 'foo'], 'lval': [1, 2]})
print(left)right = pd.DataFrame({'key': ['foo', 'foo'], 'rval': [4, 5]})
print(right)
print(pd.merge(left,right,on='key'))

输出结果为:

  key  lval
0  foo     1
1  foo     2key  rval
0  foo     4
1  foo     5key  lval  rval
0  foo     1     4
1  foo     1     5
2  foo     2     4
3  foo     2     5

分组

groupby

按照指定列进行分组,有点类似sql语句里面的分组的概念的样子

import numpy as np
import pandas as pddf = pd.DataFrame({'A':['foo', 'bar', 'foo', 'bar', 'foo', 'bar', 'foo', 'foo'],'B':['one', 'one', 'two', 'three', 'two', 'two', 'one', 'three'],'C':np.random.randn(8),'D':np.random.randn(8)})
print(df)
print("-----------------------------------")
print(df.groupby('A').sum())
print("-----------------------------------")
print(df.groupby(['A', 'B']).sum())

输出结果为:

     A      B         C         D
0  foo    one -0.411487 -0.908131
1  bar    one  0.803172 -0.093416
2  foo    two  0.079114 -0.594352
3  bar  three -1.423867 -0.025747
4  foo    two  0.832108  0.818305
5  bar    two  0.551068 -0.859953
6  foo    one -1.052481 -0.220297
7  foo  three -2.639817  0.402972
-----------------------------------C         D
A
bar -0.069626 -0.979116
foo -3.192563 -0.501502
-----------------------------------C         D
A   B
bar one    0.803172 -0.093416three -1.423867 -0.025747two    0.551068 -0.859953
foo one   -1.463968 -1.128427three -2.639817  0.402972two    0.911223  0.223953

Reshaping

import numpy as np
import pandas as pdtuples = list(zip(*[['bar', 'bar', 'baz', 'baz','foo', 'foo', 'qux', 'qux'],['one', 'two', 'one', 'two','one', 'two', 'one', 'two']]))index = pd.MultiIndex.from_tuples(tuples, names=['first', 'second'])
print(index)
df = pd.DataFrame(np.random.randn(8, 2), index=index, columns=['A', 'B'])df2 = df[:4]
print(df2)
print("---------df2.stack()------------------")
stacked = df2.stack()
print(stacked)print("---------stacked.unstack()------------")
print(stacked.unstack())print("---------stacked.unstack(1)-----------")
print(stacked.unstack(1))print("---------stacked.unstack(0)-----------")
print(stacked.unstack(0))

输出结果为 :

MultiIndex([('bar', 'one'),('bar', 'two'),('baz', 'one'),('baz', 'two'),('foo', 'one'),('foo', 'two'),('qux', 'one'),('qux', 'two')],names=['first', 'second'])A         B
first second
bar   one     0.189887  0.637367two    -0.341858 -0.895612
baz   one     0.517839 -0.798281two    -0.712129 -1.355618
---------df2.stack()------------------
first  second
bar    one     A    0.189887B    0.637367two     A   -0.341858B   -0.895612
baz    one     A    0.517839B   -0.798281two     A   -0.712129B   -1.355618
dtype: float64
---------stacked.unstack()------------A         B
first second
bar   one     0.189887  0.637367two    -0.341858 -0.895612
baz   one     0.517839 -0.798281two    -0.712129 -1.355618
---------stacked.unstack(1)-----------
second        one       two
first
bar   A  0.189887 -0.341858B  0.637367 -0.895612
baz   A  0.517839 -0.712129B -0.798281 -1.355618
---------stacked.unstack(0)-----------
first          bar       baz
second
one    A  0.189887  0.517839B  0.637367 -0.798281
two    A -0.341858 -0.712129B -0.895612 -1.355618

Pivot tables

import numpy as np
import pandas as pddf = pd.DataFrame({'A': ['one', 'one', 'two', 'three'] * 3,'B':['A','B','C'] * 4,'C': ['foo', 'foo', 'foo', 'bar', 'bar', 'bar'] * 2,'D':np.random.randn(12),'E':np.random.randn(12)})print(df)
print("-------------------------------")
print(pd.pivot_table(df, values='D', index=['A', 'B'], columns=['C']))

输出结果为:

        A  B    C         D         E
0     one  A  foo -0.282109  1.696844
1     one  B  foo  0.715732  0.283795
2     two  C  foo  0.889333  0.621878
3   three  A  bar -1.065137  1.184847
4     one  B  bar  0.420288 -0.299934
5     one  C  bar -1.269725 -1.261542
6     two  A  foo  1.142230  1.887502
7   three  B  foo -0.456574  0.650669
8     one  C  foo -0.146470 -0.307011
9     one  A  bar  0.944573  0.967164
10    two  B  bar  0.432492 -0.554618
11  three  C  bar -1.928619 -1.158268
-------------------------------
C             bar       foo
A     B
one   A  0.944573 -0.282109B  0.420288  0.715732C -1.269725 -0.146470
three A -1.065137       NaNB       NaN -0.456574C -1.928619       NaN
two   A       NaN  1.142230B  0.432492       NaNC       NaN  0.889333

时间处理

panda具有在频率转换期间执行重采样操作的简单、强大和高效的功能(例如,,将第二个数据转换为5分钟数据)。这在金融应用程序中非常常见,但不限于此。

import numpy as np
import pandas as pdrng = pd.date_range('1/1/2012',periods=100,freq='S')
ts = pd.Series(np.random.randint(0,500,len(rng)),index=rng)
print(ts.resample('5Min').sum())print("---------------------date_range-------------------------")rng = pd.date_range('3/6/2012 00:00',periods=5,freq='D')
ts = pd.Series(np.random.randn(len(rng)),rng)
print(ts)print("----------------------tz_localize-----------------------")
ts_utc = ts.tz_localize('UTC')
print(ts_utc)print("------------转换成其它时区的值---------------------------")
print(ts_utc.tz_convert('US/Eastern'))print("------------在时间跨度表示之间进行转换-------------------")
rng = pd.date_range('1/1/2012',periods=5,freq='M')
ts = pd.Series(np.random.randn(len(rng)),index=rng)
print(ts)print("----------------to_period------------------------------")
ps = ts.to_period()
print(ts)print("----------------to_timestamp---------------------------")
print(ps.to_timestamp())print("------------------------------------------------------")
prng = pd.period_range('1990Q1', '2000Q4', freq='Q-NOV')
ts = pd.Series(np.random.randn(len(prng)), prng)
ts.index = (prng.asfreq('M', 'e') + 1).asfreq('H', 's') + 9
print(ts.head())

输出结果为:

2012-01-01    24102
Freq: 5T, dtype: int32
---------------------date_range-------------------------
2012-03-06    0.059085
2012-03-07    0.216838
2012-03-08   -1.465363
2012-03-09   -0.349098
2012-03-10   -0.818129
Freq: D, dtype: float64
----------------------tz_localize-----------------------
2012-03-06 00:00:00+00:00    0.059085
2012-03-07 00:00:00+00:00    0.216838
2012-03-08 00:00:00+00:00   -1.465363
2012-03-09 00:00:00+00:00   -0.349098
2012-03-10 00:00:00+00:00   -0.818129
Freq: D, dtype: float64
------------转换成其它时区的值---------------------------
2012-03-05 19:00:00-05:00    0.059085
2012-03-06 19:00:00-05:00    0.216838
2012-03-07 19:00:00-05:00   -1.465363
2012-03-08 19:00:00-05:00   -0.349098
2012-03-09 19:00:00-05:00   -0.818129
Freq: D, dtype: float64
------------在时间跨度表示之间进行转换-------------------
2012-01-31   -0.682776
2012-02-29    0.895222
2012-03-31   -0.162116
2012-04-30   -1.175630
2012-05-31   -0.936218
Freq: M, dtype: float64
----------------to_period------------------------------
2012-01-31   -0.682776
2012-02-29    0.895222
2012-03-31   -0.162116
2012-04-30   -1.175630
2012-05-31   -0.936218
Freq: M, dtype: float64
----------------to_timestamp---------------------------
2012-01-01   -0.682776
2012-02-01    0.895222
2012-03-01   -0.162116
2012-04-01   -1.175630
2012-05-01   -0.936218
Freq: MS, dtype: float64
------------------------------------------------------
1990-03-01 09:00    1.847485
1990-06-01 09:00   -0.909369
1990-09-01 09:00    1.381791
1990-12-01 09:00    0.997901
1991-03-01 09:00    1.470387
Freq: H, dtype: float64

Categoricals

在pandas的DataFrame中包括categorical 数据.

import numpy as np
import pandas as pddf = pd.DataFrame({"id": [1, 2, 3, 4, 5, 6],"raw_grade":['a','b','b','a','a','e']})print("-----------将原始等级转换为分类数据类型-------------")
df["grade"] = df["raw_grade"].astype("category")
print(df["grade"])# 重新命名这个分类范畴为更有意义的名字
print("-------重新命名这个分类范畴为更有意义的名字----------")
df["grade"].cat.categories = ["very good", "good", "very bad"]
df["grade"] = df["grade"].cat.set_categories(["very bad", "bad", "medium","good","very good"])
print(df["grade"])print("-----按照分类中的[very bad, bad, medium, good, very good]范畴进行排序----")
print(df.sort_values(by="grade"))print("-----按照分类中的[very bad, bad, medium, good, very good]范畴进行排序,并且显示空数据的值----")
print(df.groupby('grade').size())

输出结果:

-----------将原始等级转换为分类数据类型-------------
0    a
1    b
2    b
3    a
4    a
5    e
Name: grade, dtype: category
Categories (3, object): [a, b, e]
-------重新命名这个分类范畴为更有意义的名字----------
0    very good
1         good
2         good
3    very good
4    very good
5     very bad
Name: grade, dtype: category
Categories (5, object): [very bad, bad, medium, good, very good]
-----按照分类中的[very bad, bad, medium, good, very good]范畴进行排序----id raw_grade      grade
5   6         e   very bad
1   2         b       good
2   3         b       good
0   1         a  very good
3   4         a  very good
4   5         a  very good
-----按照分类中的[very bad, bad, medium, good, very good]范畴进行排序,并且显示空数据的值----
grade
very bad     1
bad          0
medium       0
good         2
very good    3
dtype: int64

04_pandas字符串函数;数据合并concat、merge;分组groupby;Reshaping;Pivot tables;时间处理(date_range、tz_localize等)相关推荐

  1. 【数据科学】05 数据合并(merge、concat、combine)与数据清洗(缺失值、重复值、内容和格式)

    文章目录 1. 数据合并 1.1 merge()合并 1.2 concat()合并 1.3 combine()合并 2. 数据清洗 2.1 缺失值 2.2 重复值 2.3 内容与格式清洗 1. 数据合 ...

  2. Reactor 3 (10): 数据合并concat、merge

    由于业务需求有的时候需要将多个数据源进行合并,Reactor提供了concat方法和merge方法: concat方法示意图: merge方法示意图: 从图中可以很清楚的看出这两种合并方法的不同: c ...

  3. Pandas 中DataFrame 数据合并 Contract | Merge

    最近在工作中,遇到了数据合并.连接的问题,故整理如下,供需要者参考~ 参考自:象在舞:https://blog.csdn.net/gdkyxy2013/article/details/80785361 ...

  4. OpenCv——merge()函数数据合并

    函数原型:merge(tup) merge常用于RGB通道图的合并 tup必须是numpy数组 import numpy as np import matplotlib.pyplot as plt i ...

  5. [Pandas] 数据合并 pd.merge

    实现类似SQL的join操作,通过pd.merge()方法可以自由灵活地操作各种逻辑的数据连接.合并等操作 可以将两个DataFrame或Series合并,最终返回一个合并后的DataFrame 语法 ...

  6. pandas相关函数sort_values、字符串处理、index、merge、数据合并cancat、groupby分组统计

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.排序函数sort_values() 二.字符串处理 1.介绍 2.代码介绍 3.Categorical类型降低数据 ...

  7. Python之数据合并——【concat()函数、merge()函数、join()方法、combine_first()方法】

    文章目录 轴向堆叠数据--concat()函数 横向堆叠与外连接 纵向堆叠与内连接 主键合并数据--merge()函数 内连接方式 外连接方式 左连接方式 右连接方式 其他 根据行索引合并数据--jo ...

  8. 【Python数据分析】之数据合并的concat函数与merge函数

    文章目录 系列文章 一.concat函数 1)横向堆叠与外连接 横向堆叠合并df1和df2,采用==外连接==的方式 2) 纵向堆叠与内链接 二.merge()函数 1)根据行索引合并数据 2)合并重 ...

  9. 数据合并之concat、append、merge和join

    Pandas 是一套用于 Python 的快速.高效的数据分析工具.它可以用于数据挖掘和数据分析,同时也提供数据清洗功能.本文将详细讲解数据合并与连接,目录如下: ① concat 一.定义 conc ...

最新文章

  1. 大型门户网站架构设计的可伸缩性
  2. 怎么复制黑苹果config配置_估计是最后一次折腾黑苹果,技嘉 Z490 Vision D 的 OC 配置分享...
  3. 容器日志采集利器Log-Pilot
  4. 基于TensorFlow,人声识别如何在端上实现?
  5. java(5)——数据类型中的字符型和布尔类型
  6. fpga中wire和reg的区别
  7. 一位40岁“老程序员”的经历,给你们说一些我的真实想法!
  8. MySQL数据库的优化-运维架构师必会高薪技能,笔者近六年来一线城市工作实战经验...
  9. 高级JAVA - 动态代理的实现原理和源码分析
  10. 字符串流 ostrstream 和 istrstream
  11. 大魔王覃超解说 2017 Google I/O丨今晚直播!
  12. 基于javaweb的音乐网站
  13. java api1.8中文版(由谷歌,百度,有道,必应翻译).md
  14. xxnet 360浏览器设置
  15. 中秋节快乐ooooo
  16. c++的cout输出
  17. 多视几何 003 二次曲线
  18. 进制转换--(2-8)为什么2的3次方=8,所以三位变一位
  19. 福清龙华职业中专计算机应用学校什么,福建省福清龙华职业中专学校招生专业|福建省福清龙华职业中专学校有哪些专业...
  20. val( )函数的用法

热门文章

  1. 编程学将成为必然趋势,青少年编程,从哪里开始?这里推荐Python
  2. Django基础一之web框架的本质
  3. Pandas的学习(5.pandas中处理丢失数据和空值数据以及填充空值数据)
  4. opengl加载显示3D模型lxo类型文件
  5. wxHtml 示例:帮助浏览器
  6. GDCM:gdcm::CodeString的测试程序
  7. GDCM:DICOM文件转储到Siemens Base64
  8. Boost:boost::bimaps::vector_of的测试程序
  9. VTK:图表之DirectedGraphToMutableDirectedGraph
  10. OpenCV级联识别器cascade recognizer的实例(附完整代码)