相关:Series一些函数用法

目录

  • DataFrame
    • reindex
    • drop
    • loc和iloc
    • apply
    • 排序
    • 汇总统计和计算
    • 缺失值处理
    • 数据合并
    • 数据转换:对数据的过滤、清理以及其他的转换操作

DataFrame

性质:一个表格型的数据结构。它提供有序的列和不同类型的列值。

from pandas import DataFrame## 创建DataFrame ##In [0]:
DataFrame({'col0':[1,2,3], 'col1':[4,5,6]})
Out[0]:
col0    col1
0   1   4
1   2   5
2   3   6In [1]:
data = {'col0':[1,2,3], 'col1':[4,5,6]}
DataFrame(data,columns = ['col1','col0'])
Out[1]:
col1    col0
0   4   1
1   5   2
2   6   3In [2]:
DataFrame(data,columns = ['col1','col0','col2'])
Out[2]:
col1    col0    col2
0   4   1   NaN
1   5   2   NaN
2   6   3   NaN## 获取数据 ##
frame = DataFrame({'col0':[1,2,3], 'col1':[4,5,6]})​In [3]:
frame['col1']
Out[3]:
0    4
1    5
2    6
Name: col1, dtype: int64In [4]:
frame.col1
Out[4]:
0    4
1    5
2    6
Name: col1, dtype: int64## 删除数据 ##
del frame['col1']In [5]:
frame
Out[5]:
col0
0   1
1   2
2   3

reindex

dataframe可以对index或者column使用reindex方法

#DataFrame使用reindex方法
import numpy as np
frame = DataFrame(np.arange(9).reshape((3, 3)), index = ['a', 'c', 'd'], columns = ['Ohio', 'Texas', 'California'])
frame
输出:Ohio    Texas   California
a   0   1   2
c   3   4   5
d   6   7   8frame2 = frame.reindex(['a', 'b', 'c', 'd'])
frame2
输出: Ohio    Texas   California
a   0.0 1.0 2.0
b   NaN NaN NaN
c   3.0 4.0 5.0
d   6.0 7.0 8.0states = ['Texas', 'Utah', 'California']
frame.reindex(columns = states)
输出:Texas   Utah    California
a   1   NaN 2
c   4   NaN 5
d   7   NaN 8#对DataFrame使用ffill方法,书里的写法会报错,用如下写法是没问题的
frame.reindex(index = ['a', 'b', 'c', 'd'], columns = states).ffill()
输出:Texas   Utah    California
a   1.0 NaN 2.0
b   1.0 NaN 2.0
c   4.0 NaN 5.0
d   7.0 NaN 8.0

drop

loc和iloc

loc是指location的意思,iloc中的i是指integer。这两者的区别如下:

loc works on labels in the index.
iloc works on the positions in the index (so it only takes integers)
也就是说loc是根据index来索引,

如上table定义了一个index,那么loc就根据这个index来索引对应的行。
iloc是根据行号来索引,行号从0开始,逐次加1。

loc和iloc的对比:

df = DataFrame(np.arange(15).reshape((5, 3)), index = ['a', 'c', 'd', 'b', 'e'], columns = ['Ohio', 'Texas', 'California'])
df输出:Ohio    Texas   California
a   0   1   2
c   3   4   5
d   6   7   8
b   9   10  11
e   12  13  14df.loc['a':'b']
输出:Ohio    Texas   California
a   0   1   2
c   3   4   5
d   6   7   8
b   9   10  11df.iloc[0:3]
输出Ohio  Texas   California
a   0   1   2
c   3   4   5
d   6   7   8df.iloc['a':'b']
输出
报错df.loc[0:3]
输出
报错

loc的一些用法:

df = pd.DataFrame([[1, 2], [4, 5], [7, 8]],index=['cobra', 'viper', 'sidewinder'],columns=['max_speed', 'shield'])
df
输出max_speed shield
cobra   1   2
viper   4   5
sidewinder  7   8df.loc['viper']   # 输出为Seies
输出
max_speed    4
shield       5
Name: viper, dtype: int64df.loc[['viper']] # 输出为DataFrame
输出max_speed shield
viper   4   5>>> df.loc['cobra', 'shield']
2>>> df.loc['cobra':'viper', 'max_speed']
cobra    1
viper    4
Name: max_speed, dtype: int64>>> df.loc[[False, False, True]]max_speed  shield
sidewinder          7       8>>> df.loc[df['shield'] > 6]max_speed  shield
sidewinder          7       8>>> df.loc[df['shield'] > 6, ['max_speed']]max_speed
sidewinder          7>>> df.loc[lambda df: df['shield'] == 8]max_speed  shield
sidewinder          7       8# 对选中的元素设置值
>>> df.loc[['viper', 'sidewinder'], ['shield']] = 50
>>> dfmax_speed  shield
cobra               1       2
viper               4      50
sidewinder          7      50# 对整行设置值
>>> df.loc['cobra'] = 10
>>> dfmax_speed  shield
cobra              10      10
viper               4      50
sidewinder          7      50# 对整列设置值
>>> df.loc[:, 'max_speed'] = 30
>>> dfmax_speed  shield
cobra              30      10
viper              30      50
sidewinder         30      50# 对满足条件的行设置值
>>> df.loc[df['shield'] > 35] = 0
>>> dfmax_speed  shield
cobra              30      10
viper               0       0
sidewinder          0       0

iloc的一些用法:

df.iloc[0]   # 输出是一个Series
输出
Ohio          0
Texas         1
California    2
Name: a, dtype: int32df.iloc[[0]]  # 输出是DataFrame
输出Ohio  Texas   California
a   0   1   2df.iloc[[1, 4], [0, 2]]
输出
Ohio    California
c   3   5
e   12  14df.iloc[1:3, 0:3]
输出Ohio  Texas   California
c   3   4   5
d   6   7   8

apply

#函数应用和映射
import numpy as np
import pandas as pd
df=pd.DataFrame(np.random.randn(4,3),columns=list('bde'),index=['utah','ohio','texas','oregon'])
print(df)
"""b         d         e
utah   -0.667969  1.974801  0.738890
ohio   -0.896774 -0.790914  0.474183
texas   0.043476  0.890176 -0.662676
oregon  0.701109 -2.238288 -0.154442
"""#将函数应用到由各列或行形成的一维数组上。DataFrame的apply方法可以实现此功能
f=lambda x:x.max()-x.min()
#默认情况下会以列为单位,分别对列应用函数
t1=df.apply(f)
print(t1)
t2=df.apply(f,axis=1)
print(t2)"""
b    1.597883
d    4.213089
e    1.401566
dtype: float64
utah      2.642770
ohio      1.370957
texas     1.552852
oregon    2.939397
dtype: float64
"""#除标量外,传递给apply的函数还可以返回由多个值组成的Series
def f(x):return pd.Series([x.min(),x.max()],index=['min','max'])
t3=df.apply(f)
#从运行的结果可以看出,按列调用的顺序,调用函数运行的结果在右边依次追加
print(t3)"""b         d         e
min -0.896774 -2.238288 -0.662676
max  0.701109  1.974801  0.738890
"""#元素级的python函数,将函数应用到每一个元素
#将DataFrame中的各个浮点值保留两位小数
f=lambda x: '%.2f'%x
t3=df.applymap(f)
print(t3)
"""b      d      e
utah    -0.67   1.97   0.74
ohio    -0.90  -0.79   0.47
texas    0.04   0.89  -0.66
oregon   0.70  -2.24  -0.15
"""#注意,之所以这里用map,是因为Series有一个元素级函数的map方法。而dataframe只有applymap。
t4=df['e'].map(f)
print(t4)"""
utah     0.74
ohio     0.47
texas   -0.66
oregon  -0.15
"""

排序

##### DataFrame按引索引/列索引排序,
# 默认axis=0,行索引排序
# axis=1,列索引排序
frame = DataFrame(np.random.randn(4, 3), columns=list('dbe'),index=['Ut', 'Oh', 'Tex', 'Ore'])
输出d b   e
Ut  1.343094    -0.593928   0.428803
Oh  -0.834637   -0.942729   1.095775
Tex 0.358518    -0.048092   1.330677
Ore -0.562642   -0.176548   -0.551305frame.sort_index() # 默认按行升序排序
输出d b   e
Oh  -0.834637   -0.942729   1.095775
Ore -0.562642   -0.176548   -0.551305
Tex 0.358518    -0.048092   1.330677
Ut  1.343094    -0.593928   0.428803frame.sort_index(ascending=False)
输出d b   e
Ut  1.343094    -0.593928   0.428803
Tex 0.358518    -0.048092   1.330677
Ore -0.562642   -0.176548   -0.551305
Oh  -0.834637   -0.942729   1.095775frame.sort_index(axis=1)
输出b d   e
Ut  -0.593928   1.343094    0.428803
Oh  -0.942729   -0.834637   1.095775
Tex -0.048092   0.358518    1.330677
Ore -0.176548   -0.562642   -0.551305frame.sort_index(axis=1, ascending=False)
输出e d   b
Ut  0.428803    1.343094    -0.593928
Oh  1.095775    -0.834637   -0.942729
Tex 1.330677    0.358518    -0.048092
Ore -0.551305   -0.562642   -0.176548##### DataFrame按列排序
frame = DataFrame({'a': [1, 3, 1, 5], 'b': [2, 1, 4, 6]})
frame
输出a b
0   1   2
1   3   1
2   1   4
3   5   6# sort_values方法
frame.sort_values(by=['a', 'b'], ascending=[True, True])
输出a b
0   1   2
2   1   4
1   3   1
3   5   6frame.sort_values(by=['a', 'b'], ascending=[True, False])
输出a b
2   1   4
0   1   2
1   3   1
3   5   6

汇总统计和计算

df = DataFrame(np.arange(15).reshape((5, 3)), index = ['a', 'c', 'd', 'b', 'e'], columns = ['Ohio', 'Texas', 'California'])
df
输出Ohio  Texas   California
a   0   1   2
c   3   4   5
d   6   7   8
b   9   10  11
e   12  13  14df.sum()
输出
Ohio          30
Texas         35
California    40
dtype: int64df.sum(axis = 1)
输出
a     3
c    12
d    21
b    30
e    39
dtype: int64df.cumsum() # 纵向汇总_累计汇总
输出Ohio  Texas   California
a   0   1   2
c   3   5   7
d   9   12  15
b   18  22  26
e   30  35  40df.max() # 获取每列最大值
输出
Ohio          12
Texas         13
California    14
dtype: int32df.max() # 获取每行最大值
输出
a     2
c     5
d     8
b    11
e    14
dtype: int32df.idxmax() # 获取每列最大值对应的索引
输出
Ohio          e
Texas         e
California    e
dtype: objectdf.idxmax(axis = 1) # 获取每行最大值对应的索引
输出
a    California
c    California
d    California
b    California
e    California
dtype: object

缺失值处理

df = DataFrame(np.arange(15).reshape((5, 3)), index = ['a', 'c', 'd', 'b', 'e'], columns = ['Ohio', 'Texas', 'California'])
df.iloc[[1],[1]] = None
df
输出Ohio  Texas   California
a   0   1.0 2
c   3   NaN 5
d   6   7.0 8
b   9   10.0    11
e   12  13.0    14df.dropna()
输出Ohio  Texas   California
a   0   1.0 2
d   6   7.0 8
b   9   10.0    11
e   12  13.0    14df.iloc[[2]] = None
df
输出Ohio  Texas   California
a   0.0 1.0 2.0
c   3.0 NaN 5.0
d   NaN NaN NaN
b   9.0 10.0    11.0
e   12.0    13.0    14.0df.dropna(how='all')
输出Ohio  Texas   California
a   0   1.0 2
c   3   NaN 5
d   6   7.0 8
b   9   10.0    11
e   12  13.0    14

数据合并

a)pandas.merge():数据库风格的合并

b)pandas.concat()方法:轴向连接,即沿着一条轴将多个对象堆叠到一起

pd.concat([s1,s2,s3]) #默认concat在竖轴(axis=0)上连接,即产生新的Series。

数据转换:对数据的过滤、清理以及其他的转换操作


替换值

data.replace(value,np.nan)

data.replace([value1, value2],[ np.nan,0])

重命名轴索引

data.rename(index=str.title,columns=str.upper)

参考:
Python之DataFrame常用方法小结
Python学习笔记(6):Pandas的reindex方法
Python中的lambda和apply用法
python学习笔记—DataFrame和Series的排序

python:dataframe相关推荐

  1. python:dataframe保存成csv文件和读取

    一.从csv文件读取数据为dataframe 函数原型: pandas.read_csv(filepath_or_buffer, sep=', ', delimiter=None, header='i ...

  2. python:dataframe groupby后agg、apply、transfrom用法

    import pandas as pd data = pd.DataFrame({'name':['wencky','stany','barbio','barbio'],'age':[29,29,3, ...

  3. python:DataFrame的创建以及DataFrame的属性

    一.DataFrame的创建 Pandas 的数据结构主要是:Series(一维数组),DataFrame(二维数组).DataFrame是由索引和内容组成,索引既有行索引index又有列索引colu ...

  4. Python:dataframe读取以文本形式存储的数字

    pd.read_excel('xxx.xlsx', converters = {列名:数据类型})

  5. python pandas dataframe 行列选择,切片操作 原创 2017年02月15日 21:43:18 标签: python 30760 python pandas dataframe

    python pandas dataframe 行列选择,切片操作 原创 2017年02月15日 21:43:18 标签: python / 30760 编辑 删除 python pandas dat ...

  6. Python语言学习之pandas:DataFrame二维表的简介、常用函数、常用案例之详细攻略

    Python语言学习之pandas:DataFrame二维表的简介.常用函数.常用案例之详细攻略 目录 DataFrame的简介 DataFrame的常用案例 1.写入和读取excel表格文件

  7. python pandas修改列名,Python_Pandas学习笔记02:DataFrame获取列名和修改列名

    Python_Pandas学习笔记02:DataFrame获取列名和修改列名 Python_Pandas学习笔记02:DataFrame获取列名和修改列名 一.参考资料 [1].?Pandas获取列名 ...

  8. Python语言学习之pandas:DataFrame二维表的简介、常用函数、常用案例(增删改查排序之选择指定列、根据条件选择特定数据、赋值、列名重命名、修改列数据、处理缺失值、列合并、分组之详细攻略

    Python语言学习之pandas:DataFrame二维表的简介.常用函数.常用案例(增删改查排序之选择指定列.根据条件选择特定数据.赋值.列名重命名.修改列数据.处理缺失值.列合并.分组之详细攻略 ...

  9. (六)Python:Pandas中的DataFrame

    目录 基本特征 创建 自动生成行索引 自定义生成行索引 使用 索引与值 基本操作 统计功能 基本特征 一个表格型的数据结构 含有一组有序的列(类似于index) 大致可看成共享同一个index的Ser ...

最新文章

  1. 企业 SpringBoot 教程(六)springboot整合mybatis
  2. tf.metrics.accuracy
  3. 在Red Hat Linux中自动运行程序
  4. @FunctionalInterface
  5. 基于Xml 的IOC 容器-载入<property>元素
  6. linux+svn+拉取版本_在linux客户端下管理svn版本库
  7. oracle 最小权限,oracle低权限下获取shell
  8. Kotlin实现LeetCode算法题之String to Integer (atoi)
  9. 侧信道实验实验三 S盒CPA侧信道攻击
  10. 递归算法php,PHP递归算法的详细示例分析
  11. 2021高考成绩查询数学和物理,2021高考成绩什么时候几点可以查
  12. 云呐|常用的固定资产盘点方法有哪些
  13. 23andme的申请流程和注意事项
  14. python2中print不换行及print不换行且无空格写法
  15. 文字生成图片html,根据文字生成图片
  16. Windows10和Ubuntu双系统如何卸载Ubuntu系统
  17. Android 麦克风录音动画
  18. 【Ant Design】下拉列表Select 、日期选择框DatePicker等跟随滚动条上下移动解决方案
  19. 读书笔记:《启示录》
  20. 是谁在偷窥你的手机隐私?

热门文章

  1. Spark 1.4连接mysql诡异的问题及解决
  2. Nano PC ubuntu13.10 源
  3. C#常用类库(100多个)
  4. oracle存储过程 学习笔记
  5. 5年博龄只有十几篇文章,惭愧呀
  6. paho.mqtt.embedded-c-master c语言版本架构
  7. 制作 ramdisk.img,使用cpio 和 gzip
  8. 微众WeCross 跨链平台(2)网络拓扑
  9. buu [BJDCTF 2nd]老文盲了
  10. 【django】站点管理