原标题:10招!看骨灰级Pythoner如何玩转Python

pandas是基于numpy构建的,使数据分析工作变得更快更简单的高级数据结构和操作工具。本文为大家带来10个玩转Python的小技巧,学会了分分钟通关变大神!

read_csv

每个人都知道这个命令。但如果你要读取很大的数据,尝试添加这个参数:nrows = 5,以便在实际加载整个表之前仅读取表的一小部分。然后你可以通过选择错误的分隔符来避免错误(它不一定总是以逗号分隔)。

(或者,你可以在linux中使用'head'命令来检查任何文本文件中的前5行,例如:head -c 5 data.txt)

然后,你可以使用df.columns.tolist()来提取列表中的所有列,然后添加usecols = ['c1','c2',...]参数以加载所需的列。此外,如果你知道几个特定列的数据类型,则可以添加参数dtype = {'c1':str,'c2':int,...},以便数据加载得更快。此参数还有另一个优点,如果你有一个同时包含字符串和数字的列,那么将其类型声明为字符串是一个好选择,这样就可以在尝试使用此列作为键去合并表时不会出错。

select_dtypes

如果必须在Python中进行数据预处理,那么这个命令可以节约一些时间。读取表后,每列的默认数据类型可以是bool,int64,float64,object,category,timedelta64或datetime64。你可以先查看

df.dtypes.value_counts()

命令分发的结果以了解数据帧的所有可能数据类型,然后执行

df.select_dtypes(include = ['float64','int64'])

选择仅具有数字特征的子数据帧。

Copy

这是一个重要的命令。如果执行以下命令:

import pandas as pddf1 = pd.DataFrame({ ‘a’:[0,0,0], ‘b’: [1,1,1]})df2 = df1df2[‘a’] = df2[‘a’] + 1df1.head()

你会发现df1已经改变了。这是因为df2 = df1没有复制df1的值并将其分配给df2,而是设置指向df1的指针。因此,df2的任何变化都会导致df1发生变化 要解决这个问题,你可以:

df2= df1.copy()br

或者

from copy import deepcopydf2 = deepcopy(df1)

Map

这是一个可以进行简单数据转换的命令。首先定义一个字典,其中'keys'是旧值,'values'是新值。

level_map = {1: ‘high’, 2: ‘medium’, 3: ‘low’}df[‘c_level’] = df[‘c’].map(level_map)

举几个例子:True,False为1,0(用于建模); 定义水平; 用户定义的词法编码。

apply or not apply?

如果我们想创建一个新的列,并将其他列作为输入,那么apply函数有时非常有用。

defrule(x, y):if x == ‘high’ and y > 10:return1else:return0df = pd.DataFrame({ 'c1':[ 'high' ,'high', 'low', 'low'], 'c2': [0, 23, 17, 4]})df['new'] = df.apply(lambda x: rule(x['c1'], x['c2']), axis = 1)df.head()

在上面的代码中,我们定义了一个带有两个输入变量的函数,并使用apply函数将其应用于列'c1'和'c2'。

但“apply函数”的问题是它有时太慢了。 如果你想计算两列“c1”和“c2”的最大值,你可以:

df[‘maximum’] = df.apply(lambda x: max(x[‘c1’], x[‘c2’]), axis = 1)

但你会发现它比这个命令慢得多:

df[‘maximum’] = df[[‘c1’,’c2']].max(axis =1)

注意:如果可以使用其他内置函数完成相同的工作(它们通常更快),请不要使用apply。例如,如果要将列'c'舍入为整数,请执行round(df ['c'],0)而非使用apply函数:

df.apply(lambda x: round(x['c'], 0), axis = 1)

value counts

这是一个检查值分布的命令。例如,如果你想检查“c”列中每个值的可能值和频率,可以执行以下操作

df[‘c’].value_counts()

它有一些有用的技巧/参数:

A. normalize = True:如果你要检查频率而不是计数。B. dropna = False:如果你要统计数据中包含的缺失值。C. df['c'].value_counts().reset_index(): 如果你想将stats表转换成pandas数据帧并进行操作。D. df['c'].value_counts().reset_index().sort_values(by='index') : 显示按值而不是按计数排序的统计数据。

缺失值的数量

构建模型时,你可能希望排除具有很多缺失值或全是缺失值的行。你可以使用.isnull()和.sum()来计算指定列中缺失值的数量。

import pandas as pdimport numpy as npdf = pd.DataFrame({ ‘id’: [1,2,3], ‘c1’:[0,0,np.nan], ‘c2’: [np.nan,1,1]})df = df[[‘id’, ‘c1’, ‘c2’]]df[‘num_nulls’] = df[[‘c1’, ‘c2’]].isnull().sum(axis=1)df.head()

选择具有特定ID的行

在SQL中,我们可以使用SELECT * FROM ... WHERE ID('A001','C022',...)来获取具有特定ID的记录。如果想用Pandas做同样的事情,你可以

df_filter = df[‘ID’].isin([‘A001’,‘C022’,...])df[df_filter]

Percentile groups

你有一个数字列,并希望将该列中的值分类为组,例如将列的前5%,分为组1,前5-20%分为组2,前20%-50%分为组3,最后50%分为组4。当然,你可以用pandas.cut来做,但这里提供另一个选择:

import numpy as npcut_points = [np.percentile(df[‘c’], i) for i in [50, 80, 95]]df[‘group’] = 1for i inrange(3): df[‘group’] = df[‘group’] + (df[‘c’] < cut_points[i])# or <= cut_points[i]

这个指令使计算机运行的非常快(没有使用应用功能)。

to_csv

这也是每个人都会使用的命令。这里指出两个技巧。 第一个是

print(df[:5].to_csv())

你可以使用此命令准确地打印出写入文件的前五行数据。

另一个技巧是处理混合在一起的整数和缺失值。如果列同时包含缺失值和整数,则数据类型仍将是float而不是int。导出表时,可以添加float_format ='%。0f'将所有浮点数舍入为整数。如果只想要所有列的整数输出,请使用此技巧,你将摆脱所有令人苦恼的'.0'。

责任编辑:

python中df head_10招!看骨灰级Pythoner如何玩转Python相关推荐

  1. python中的位置怎么看_如何知道项目在Python有序字典中的位置

    首先,你需要阅读文档.如果打开一个Python教程,然后尝试查找有关OrderedDict的信息,您将看到以下内容:class collections.OrderedDict([items]) - R ...

  2. python骨灰教学_10招!看骨灰级Pythoner玩转Python的方法

    10招!看骨灰级Pythoner玩转Python的方法 来源:中文源码网    浏览: 次    日期:2019年11月5日 [下载文档:  10招!看骨灰级Pythoner玩转Python的方法.t ...

  3. python中装饰器修复技术_12步轻松搞定Python装饰器

    作为一名教python的老师,我发现学生们基本上一开始很难搞定python的装饰器,也许因为装饰器确实很难懂.搞定装饰器需要你了解一些函数式编程的概念,当然还有理解在python中定义和调用函数相关语 ...

  4. python中所有保留字首字母都是小写_int是不是python的保留字

    int是不是python的保留字 发布时间:2020-11-13 14:48:48 来源:亿速云 阅读:61 作者:小新 小编给大家分享一下int是不是python的保留字,相信大部分人都还不怎么了解 ...

  5. python中能够处理的最大整数是_实例讲解Python中整数的最大值输出

    在Python中可以存储很大的值,如下面的Python示例程序: x = 10000000000000000000000000000000000000000000; x = x + 1 print ( ...

  6. python中df head_解决Python spyder显示不全df列和行的问题

    python中有的df列比较长head的时候会出现省略号,现在数据分析常用的就是基于anaconda的notebook和sypder,在spyder下head的时候就会比较明显的遇到显示不全.这时候我 ...

  7. python中df去重_Python中DataFrame去重

    Delphi的哈希表(一) 哈希表是通过哈希值来访问的,通过一定的内存浪费获取检索速度,在检索项时是不需要逐一检索.在编程中有一定的好处. unit Unit1; interface uses Win ...

  8. python中df占位符_PYTHON 中的%s %占位符用法

    官方文档 解释说明 一种字符串格式化的语法, 基本用法是将值插入到%s占位符的字符串中. %%,表示输出一个% %s,表示格式化一个对象为字符 "%±(正负号表示)3(数字表示字符串的长度) ...

  9. python中静态变量和静态方法_【开发者笔记】python中的类方法(@classmethod)和静态方法(@staticmethod)...

    在java.c#等高级语言中我们用static来定义静态方法和静态变量,那么在python中如何定义静态方法和静态变量呢. python提供了@classmethod和@staticmethod来定义 ...

最新文章

  1. mongodb集合的增删
  2. 中职计算机专业论文,中职教学中计算机专业论文
  3. 阿里云微服务引擎 MSE 2022 年 3 月产品动态
  4. python中用函数货币转换代码_python将人民币转换大写的脚本代码
  5. oracle的undo表空间不足,undo表空间不足,ORA-30036 unable to extend segment by ...
  6. JMS(Java消息服务)与消息队列ActiveMQ基本使用(一)
  7. vue3安装_Vue 3.0正式发布了!
  8. 原官方YM源码 二开苹果cms电影视频网站源码模板
  9. 建筑结构抗震设计新技术
  10. [Qualcomm][MSM8937] MSM89XX平台上加载modem固件失败
  11. 如何修复计算机策略组,如何在Win10中修复损坏的组策略
  12. 主动学习、纯半监督学习与直推学习
  13. 电商与硬件——从购买电脑的角度学计算机硬件基础
  14. SVN更新(update)文件时,报skipped, remains conficted时的解决办法
  15. python的spider程序下载_Python Spider
  16. VS编程,WPF控件增加图片背景的一种方法
  17. OpenCV:多边形逼近轮廓
  18. 苹果框架学习(二) Metal
  19. word2vec中的CBOW模型
  20. Complementary congruent and opposite neurons achieve concurrent multisensory integration and segrega

热门文章

  1. Centos6.5进入救援模式的方法
  2. 二十万字C/C++、嵌入式软开面试题全集宝典十
  3. 【Matlab】山地建模?立体热度?怎么绘制三维曲面图?
  4. [云炬创业管理笔记]第五章打磨最有效的商业模式测试1
  5. 配置nginx/apache的404状态码来申请百度闭站保护
  6. 吴恩达《Machine Learning》精炼笔记 12:大规模机器学习和图片文字识别 OCR
  7. 6 种激活函数核心知识点,请务必掌握!
  8. c8800 mp4设置
  9. SpringBoot中的自定义路径怎么配置/根目录配置方法
  10. (char*)malloc(sizeof(char))有什么用,为什么要这么写——简单介绍指针