加入收藏 | 设为首页 | 会员中心 | 我要投稿 河北网 (https://www.hebeiwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

10招!看骨灰级Pythoner怎样玩转Python

发布时间:2019-04-15 19:47:35 所属栏目:建站 来源:读芯术
导读:pandas是基于numpy构建的,使数据说明事变变得更快更简朴的高级数据布局和操纵器材。本文为各人带来10个玩转Python的小能力,学会了分分钟通关变大神! 1. read_csv 每小我私人都知道这个呼吁。但假如你要读取很大的数据,实行添加这个参数:nrows = 5,以便在
副问题[/!--empirenews.page--]

pandas是基于numpy构建的,使数据说明事变变得更快更简朴的高级数据布局和操纵器材。本文为各人带来10个玩转Python的小能力,学会了分分钟通关变大神!

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。你可以先查察

  1. df.dtypes.value_counts() 

呼吁分发的功效以相识数据帧的全部也许数据范例,然后执行

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

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

3. Copy

这是一个重要的呼吁。假如执行以下呼吁:

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

你会发明df1已经改变了。这是由于df2 = df1没有复制df1的值并将其分派给df2,而是配置指向df1的指针。因此,df2的任何变革城市导致df1产生变革 要办理这个题目,你可以:

  1. df2   
  2. = df1.copy() 
  3. br 

可能

  1. from copy import deepcopy 
  2. df2 = deepcopy(df1) 

4. Map

这是一个可以举办简朴数据转换的呼吁。起首界说一个字典,个中'keys'是旧值,'values'是新值。

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

举几个例子:True,False为1,0(用于建模); 界说程度; 用户界说的词法编码。

5. apply or not apply?

假如我们想建设一个新的列,并将其他列作为输入,那么apply函数偶然很是有效。

  1. def rule(x, y): 
  2.     if x == ‘high’ and y > 10: 
  3.          return 1 
  4.     else: 
  5.          return 0 
  6. df = pd.DataFrame({ 'c1':[ 'high' ,'high', 'low', 'low'], 'c2': [0, 23, 17, 4]}) 
  7. df['new'] = df.apply(lambda x: rule(x['c1'], x['c2']), axis =  1) 
  8. df.head() 

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

但“apply函数”的题目是它偶然太慢了。 假如你想计较两列“c1”和“c2”的最大值,你可以:

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

但你会发明它比这个呼吁慢得多:

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

留意:假如可以行使其他内置函数完成沟通的事变(它们凡是更快),请不要行使apply。譬喻,假如要将列'c'舍入为整数,请执行round(df ['c'],0)而非行使apply函数:

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

6. value counts

这是一个搜查值漫衍的呼吁。譬喻,假如你想搜查“c”列中每个值的也许值和频率,可以执行以下操纵

  1. df[‘c’].value_counts() 

它有一些有效的能力/参数:

  1. A. normalize = True:假如你要搜查频率而不是计数。 
  2. B. dropna = False:假如你要统计数据中包括的缺失值。 
  3. C. df['c'].value_counts().reset_index():  假如你想将stats表转换成pandas数据帧并举办操纵。 
  4. D. df['c'].value_counts().reset_index().sort_values(by='index') : 表现按值而不是按计数排序的统计数据。 

7. 缺失值的数目

(编辑:河北网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读