图解python轻松快速掌握(10招!看骨灰级Pythoner玩转Python的方法)
图解python轻松快速掌握
10招!看骨灰级Pythoner玩转Python的方法pandas是基于numpy构建的,使数据分析工作变得更快更简单的高级数据结构和操作工具。本文为大家带来10个玩转python的小技巧,学会了分分钟通关变大神!
1. read_csv
每个人都知道这个命令。但如果你要读取很大的数据,尝试添加这个参数:nrows = 5,以便在实际加载整个表之前仅读取表的一小部分。然后你可以通过选择错误的分隔符来避免错误(它不一定总是以逗号分隔)。
(或者,你可以在linux中使用'head'命令来检查任何文本文件中的前5行,例如:head -c 5 data.txt)
然后,你可以使用df.columns.tolist()来提取列表中的所有列,然后添加usecols = ['c1','c2',...]参数以加载所需的列。此外,如果你知道几个特定列的数据类型,则可以添加参数dtype = {'c1':str,'c2':int,...},以便数据加载得更快。此参数还有另一个优点,如果你有一个同时包含字符串和数字的列,那么将其类型声明为字符串是一个好选择,这样就可以在尝试使用此列作为键去合并表时不会出错。
2. select_dtypes
如果必须在python中进行数据预处理,那么这个命令可以节约一些时间。读取表后,每列的默认数据类型可以是bool,int64,float64,object,category,timedelta64或datetime64。你可以先查看
df.dtypes.value_counts()
命令分发的结果以了解数据帧的所有可能数据类型,然后执行
df.select_dtypes(include = ['float64','int64'])
选择仅具有数字特征的子数据帧。
3. copy
这是一个重要的命令。如果执行以下命令:
|
import pandas as pd df1 = pd.dataframe({ ‘a ':[0,0,0], ‘b' : [ 1 , 1 , 1 ]}) df2 = df1 df2[‘a '] = df2[‘a' ] + 1 df1.head() |
你会发现df1已经改变了。这是因为df2 = df1没有复制df1的值并将其分配给df2,而是设置指向df1的指针。因此,df2的任何变化都会导致df1发生变化 要解决这个问题,你可以:
|
df2 = df1.copy() br |
或者
|
from copy import deepcopy df2 = deepcopy(df1) |
4. map
这是一个可以进行简单数据转换的命令。首先定义一个字典,其中'keys'是旧值,'values'是新值。
|
level_map = { 1 : ‘high ', 2: ‘medium' , 3 : ‘low'} df[‘c_level '] = df[‘c' ]. map (level_map) |
举几个例子:true,false为1,0(用于建模); 定义水平; 用户定义的词法编码。
5. apply or not apply?
如果我们想创建一个新的列,并将其他列作为输入,那么apply函数有时非常有用。
|
def rule(x, y): if x = = ‘high' and y > 10 : return 1 else : return 0 df = 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)
6. 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') : 显示按值而不是按计数排序的统计数据。
7. 缺失值的数量
构建模型时,你可能希望排除具有很多缺失值或全是缺失值的行。你可以使用.isnull()和.sum()来计算指定列中缺失值的数量。
|
import pandas as pd import numpy as np df = pd.dataframe({ ‘ id ': [1,2,3], ‘c1' :[ 0 , 0 ,np.nan], ‘c2': [np.nan, 1 , 1 ]}) dfdf = df[[‘ id ', ‘c1' , ‘c2']] df[‘num_nulls '] = df[[‘c1' , ‘c2']].isnull(). sum (axis = 1 ) df.head() |
8. 选择具有特定id的行
在sql中,我们可以使用select * from ... where id('a001','c022',...)
来获取具有特定id的记录。如果想用pandas做同样的事情,你可以
|
dfdf_filter = df[‘ id '].isin([‘a001' ,‘c022',...]) df[df_filter] |
9. percentile groups
你有一个数字列,并希望将该列中的值分类为组,例如将列的前5%,分为组1,前5-20%分为组2,前20%-50%分为组3,最后50%分为组4。当然,你可以用pandas.cut来做,但这里提供另一个选择:
|
import numpy as np cut_points = [np.percentile(df[‘c'], i) for i in [ 50 , 80 , 95 ]] df[‘group'] = 1 for i in range ( 3 ): df[‘group '] = df[‘group' ] + (df[‘c'] < cut_points[i]) # or <= cut_points[i] |
这个指令使计算机运行的非常快(没有使用应用功能)。
10. to_csv
这也是每个人都会使用的命令。这里指出两个技巧。 第一个是
print(df[:5].to_csv())
你可以使用此命令准确地打印出写入文件的前五行数据。
另一个技巧是处理混合在一起的整数和缺失值。如果列同时包含缺失值和整数,则数据类型仍将是float而不是int。导出表时,可以添加float_format ='%
。0f'将所有浮点数舍入为整数。如果只想要所有列的整数输出,请使用此技巧,你将摆脱所有令人苦恼的'.0'。
总结
以上所述是小编给大家介绍的10招!看骨灰级pythoner玩转python的方法 ,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对开心学习网网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!原文链接:http://developer.51cto.com/art/201904/594967.htm?utm_source=tuicool&utm_medium=referral
- python读取word的表格(Python使用reportlab模块生成PDF格式的文档)
- python如何编写定时器(python 定时器,轮询定时器的实例)
- python栈和队列(Python 实现数据结构中的栈队列)
- python函数调用传递数组数据(python调用c++传递数组的实例)
- python3字符串格式化怎么操作(python3实现字符串操作的实例代码)
- pythonzipfile的用法(对Python之gzip文件读写的方法详解)
- python redis锁的使用(Python操作redis实例小结String、Hash、List、Set等)
- python opencv图像合并(Python3+OpenCV2实现图像的几何变换平移、镜像、缩放、旋转、仿射)
- python封装函数讲解(Python中super函数用法实例分析)
- 用python图片转字符串(python实现图片转字符小工具)
- python函数操作大全(Python的高阶函数用法实例分析)
- python定时任务(Python使用crontab模块设置和清除定时任务操作详解)
- pythonrequest包设置编码(解决python3中的requests解析中文页面出现乱码问题)
- python爬取微博登录数据(Python实现爬取马云的微博功能示例)
- python 字典按key值排序(Python 按字典dict的键排序,并取出相应的键值放于list中的实例)
- python本地ocr库(详解Python安装tesserocr遇到的各种问题及解决办法)
- 蓝色代表什么(蓝色代表什么性格的人)
- 红色代表什么(红色代表什么情感和含义)
- 南宋志南和尚绝句 杨柳风似庙中来(南宋志南和尚绝句)
- 今天要穿什么颜色(今天要穿什么颜色的衣服最吉利)
- 一道高中题-求杯子的高度(一道高中题-求杯子的高度)
- 网坛停摆三巨头亏损惨重,费德勒跌幅88 纳达少赚2400万(网坛停摆三巨头亏损惨重)
热门推荐
- laravel数据库日志(Laravel 将数据表的数据导出,并生成seeds种子文件的方法)
- html5导入图片文件(HTML5 实现图片上传预处理功能)
- canvas 裁剪画布(Canvas图片分割效果的实现)
- php函数使用教程讲解学习交流(浅谈PHP中的Trait使用方法)
- python面向对象练习方法(Python面向对象实现一个对象调用另一个对象操作示例)
- webpack打包公共文件(webpack文件打包错误异常)
- 阿里云ftp搭建(阿里云服务器搭建FTP服务器图文教程windows)
- html+css网页布局实例(网页布局入门教程 如何用CSS进行网页布局)
- access标签名称属性(htaccess 防盗链,防止目录浏览等10大技巧)
- dedecms中的有些功能如何修改(dedecms 栏目页面转换为单独页面)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9