DataFrame是python中Pandas库中的一种数据结构,类似excel,是一种二维表。DataFrame的单元格可以存放数值,字符串等类型数据。python在处理excel数据时通常都会用DataFrame来读。

1.读写数据
%%time
# 读数据
import pandas as pd
df = pd.read_excel('2019-2.xlsx',sheet_name=None)

%%time可以计算代码的运行时间,但是要注意的是一定放在所有代码的第一行,即使第一行是注释也要放在注释上面,否则会报错。
output:

CPU times: user 8min 54s, sys: 11.6 s, total: 9min 5s
Wall time: 8min 47s
# 写数据
# 建立一个空的df
df= pd.DataFrame() # 或df = pd.DataFrame(columns=('A','B'))
for i in idx:a=b=df=df.append(pd.DataFrame({'A':[a],'B':[b]}),ignore_index=True)
2.获取excel中的所有sheet
import openpyxl
wb = openpyxl.load_workbook('2019-2.xlsx')
# 获取workbook中所有的表格
sheets = wb.sheetnames
print(sheets)

ouput:

['0201-0216', '0217-0223', '0224-0228']

则这个excel文件中有名为’0201-0216’, ‘0217-0223’, '0224-0228’的三种表,读取某张表可以直接用df[‘xxx’]表示。

3.查看数据

3.1 查看数据类型:

df.dtypes# 修改单列数据类型
df['A'] = df['A'].astype(int)
df['A'] = df['A'].apply(int)
# 修改全部数据类型
df = df.applymap(int)
df = pd.DataFrame(df ,dtype=np.float)

3.2 查看头尾几行的数据

df.head()
df.tail()

默认5行,可直接在括号内填入具体的值来显示自己想看的行数。

3.3 查看行列数
使用shape查看行列数,参数0为查看行数,参数1为查看列数。

df3.shape[0]
df3.shape[1]

3.4 查看行名与列名
使用index为查看行名,columns为查看列名。

df.index
df.columns

3.5 查看数据值
使用values可以查看DataFrame里的数据值,返回的是一个数组。

df.values

按行:
可使用loc或iloc,loc是根据行名,iloc是根据行的索引。如果查看多行要多嵌套一个中括号。

# 单行
df.loc['xxx']
df.iloc[0]
# 多行
df.loc[['aa','bb']]
df.iloc[[0,1]]

按列:
直接使用列名即可。同样如果要取多列,注意需要两个中括号。

# 某一列
df['xxx']
# aaa列和bbb列
df[['aaa', 'bbb']]

3.6 按条件查找
例如:查找年龄为18且成绩大于90的学生学号和姓名。

df[(df['age'] == 18) & (df['score']>90)][['no','name']]

3.7 查看空值的个数

# 查看有值的个数
df.info(verbose=True, null_counts=True)
# 按列查看空值个数
df.isnull().sum(axis=0)
# 按行查看空值个数
df.isnull().sum(axis=1)
# 整个df的空值个数
df.isnull().sum().sum()

3.8 查看重复值个数

df['列名'].value_counts()

3.9 删除重复项,同时根据另一列数值选取保留行

# 方法1:
# 1. 对 B 列进行降序排序;
# 2. 删除 A 列的重复的行,但保留第一次出现的行。
# 3. 重置索引
df.sort_values("B", ascending=False).drop_duplicates("A", keep='first').reset_index(drop=True)# 方法2:
# 通过 groupby 的方法实现。
df.groupby(['A'])['B'].max()

3.10 分组统计

# 不包含NaN值
a = df.groupby(["列1","列2"],as_index=False)['count'].count()
# 包含NaN值
a = df.groupby(["列1","列2"],as_index=False)['count'].size()
4. pd.merge函数

利用merge函数可以查找两个表中相同元素,效率非常高。

pd.merge(left, right, how='inner', on=None, left_on=None, right_on=None,left_index=False, right_index=False, sort=True,suffixes=('_x', '_y'), copy=True, indicator=False,validate=None)

参数:

left: 拼接的左侧DataFrame对象
right: 拼接的右侧DataFrame对象
on: 要加入的列或索引级别名称。 必须在左侧和右侧DataFrame对象中找到。 如果未传递且left_index和right_index为False,则DataFrame中的列的交集将被推断为连接键。
left_on:左侧DataFrame中的列或索引级别用作键。 可以是列名,索引级名称,也可以是长度等于DataFrame长度的数组。
right_on: 左侧DataFrame中的列或索引级别用作键。 可以是列名,索引级名称,也可以是长度等于DataFrame长度的数组。
left_index: 如果为True,则使用左侧DataFrame中的索引(行标签)作为其连接键。 对于具有MultiIndex(分层)的DataFrame,级别数必须与右侧DataFrame中的连接键数相匹配。
right_index: 与left_index功能相似。
how: One of ‘left’, ‘right’, ‘outer’, ‘inner’. 默认inner。inner是取交集,outer取并集。比如left:[‘A’,‘B’,‘C’];right[’'A,‘C’,‘D’];inner取交集的话,left中出现的A会和right中出现的买一个A进行匹配拼接,如果没有是B,在right中没有匹配到,则会丢失。'outer’取并集,出现的A会进行一一匹配,没有同时出现的会将缺失的部分添加缺失值。
sort: 按字典顺序通过连接键对结果DataFrame进行排序。 默认为True,设置为False将在很多情况下显着提高性能。
suffixes: 用于重叠列的字符串后缀元组。 默认为(‘x’,’ y’)。
copy: 始终从传递的DataFrame对象复制数据(默认为True),即使不需要重建索引也是如此。
indicator:将一列添加到名为_merge的输出DataFrame,其中包含有关每行源的信息。 _merge是分类类型,并且对于其合并键仅出现在“左”DataFrame中的观察值,取得值为left_only,对于其合并键仅出现在“右”DataFrame中的观察值为right_only,并且如果在两者中都找到观察点的合并键,则为left_only。
5. Pandas之drop_duplicates:去除重复项
DataFrame.drop_duplicates(subset=None, keep='first', inplace=False)

参数:

  • subset : column label or sequence of labels, optional
    用来指定特定的列,默认所有列
  • keep : {‘first’, ‘last’, False}, default ‘first’
    删除重复项并保留第一次出现的项
  • inplace : boolean, default False
    是直接在原来数据上修改还是保留一个副本

python之DataFrame篇相关推荐

  1. python中dataframe合并列名日期到季度_python 处理dataframe中的时间字段方法

    在机器学习过程中,通常会通过pandas读取csv文件,保持成dadaframe格式,然而有时候需要对dataframe中的时间字段进行数据建模,比如时间格式为datetime,那么像一般操作data ...

  2. python dataframe遍历_对Python中DataFrame按照行遍历的方法

    对Python中DataFrame按照行遍历的方法 在做分类模型时候,需要在DataFrame中按照行获取数据以便于进行训练和测试. import pandas as pd dict=[[1,2,3, ...

  3. python pandas dataframe 不显示索引_Python DataFrame 设置输出不显示index(索引)值的方法...

    Python DataFrame 设置输出不显示index(索引)值的方法 在输出代码行中,加入"index=False"如下: m_pred_survived.to_csv(&q ...

  4. python中显示第三行数据_在Python中Dataframe通过print输出多行时显示省略号的实例...

    笔者使用python进行数据分析时,通过print输出dataframe中的数据,当dataframe行数很多时,中间部分显示省略号,如下图所示: 0 项华祥 1 何炅 2 张艺飞 3 李仁港 4 崔 ...

  5. python爬虫入门篇(二)

    往期文章 python爬虫入门篇(一) 目录 往期文章 前言 一.为什么不能直接打开开发者工具 ① 误判开发者工具中的Elements(元素)就是源代码 ② 为什么源代码和Elements显示的不一样 ...

  6. python读取前两列数据对比_使用Python的Dataframe取两列时间值相差一年的所有行方法...

    在使用Python处理数据时,经常需要对数据筛选. 这是在对时间筛选时,判断两列时间是否相差一年,如果是,则返回符合条件的所有列. data原始数据: data[map(lambda x:dateti ...

  7. python提取两列数据对比_使用Python的Dataframe取两列时间值相差一年的所有行方法...

    在使用Python处理数据时,经常需要对数据筛选. 这是在对时间筛选时,判断两列时间是否相差一年,如果是,则返回符合条件的所有列. data原始数据: data[map(lambda x:dateti ...

  8. python pandas DataFrame 替换 NaN 值 和 删除 NaN 所在的行。

    python pandas DataFrame 替换 NaN 值 和 删除 NaN 所在的行. import pandas as pd import numpy as np df1 = pd.Data ...

  9. python pandas DataFrame 查找NaN所在的位置

    python pandas DataFrame 查找 NaN 所在的位置 import pandas as pd import numpy as np df1 = pd.DataFrame({'日期' ...

最新文章

  1. 【力扣网练习题】整数反转
  2. 零基础如何掌握web前端开发技能
  3. VBS字符编码的说明
  4. 微信小程序字符串与对象相互转换
  5. 重命名Jakarta EE的Java EE规范
  6. JAVA多线程和并发基础面试问答(转载)
  7. 解决老是提示找不到Mapper文件无法执行定义的方法问题!
  8. java线程打水问题_Java 多线程 wait() 虚假唤醒问题
  9. pytorch学习笔记(十一):pytorch实现多层感知机
  10. 深度比较Java循环的性能
  11. 第四:搜索算法应用 - 四皇后问题
  12. 2833 奇怪的梦境 未AC
  13. 数电第二版 潘松 陈龙 第二章 答案
  14. 图论复习(二)-——哈密顿图及其应用
  15. DLL加载: Debug版本正常加载,Release版本LoadLibrary加载失败,返回错误126
  16. 国际标准智商测试题目
  17. su必备插件_建模必备逆天Sketchup插件I
  18. js动态函数(方法)
  19. python win10 桌面_利用Python批量提取Win10锁屏壁纸实战教程
  20. 4月21日V反再次来临?

热门文章

  1. 义隆I/O口系列EM78P153EM78P153BEM78P153B-SOP8
  2. 天哪!男朋友对大姨妈的误解有多深?
  3. 防止DDOS攻击的策略
  4. 小灵通退市:生得伟大 死得光荣!
  5. 【C语言】实现简单通讯录系统(源码)
  6. [软件人生]人生强硬也要懂得弯折——谈人性的两面
  7. 独立成分分析ICA/FastICA
  8. operator的解释
  9. wavecn 2.0.0.5 正式版_iOS 13.6 GM版?来了,正式版还会远吗?
  10. 虚拟机——windows安装VMware虚拟机