你也许已经留意到apply要领比iterrows要领快得多。其机能可媲美与NumPy数组,但apply要领提供了更多的机动性。你可以在此处阅读apply要领的文档。(https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.apply.html)
2. Pandas.DataFrame.loc | Python数据处理赏罚的能力
这是我最喜好的Pandas库的能力之一。我认为对付处理赏罚数据使命的数据科学家来说,这是一个必需知道的要领(以是险些每小我私人都是这样!)
大大都时辰,我们只必要按照某些前提来更新数据齐集特定列的某些值。Pandas.DataFrame.loc为我们提供了针对此类题目的优化的办理方案。
让我们行使loc函数办理一个题目。你可以在此处下载将要行使的数据集(https://drive.google.com/file/d/1VwXDA27zgx5jIq8C7NQW0A5rtE95e3XI/view?usp=sharing)。
- # 导入库
- import pandas as pd
- data = pd.read_csv('school.csv')
- data.head()

搜查“City”变量的各个值的频数:

此刻,假设我们只必要排名前5位的都市,并但愿将别的都市替代为“Others”(其他)都市。因此,让我们这么写:
- # 将热点都市生涯在列表中
- top_cities = ['Brooklyn','Bronx','Manhattan','Jamaica','Long Island City']
- # 行使loc更新方针
- data.loc[(data.City.isin(top_cities) == False),'City'] = 'Others'
- # 各个都市的频数
- data.City.value_counts()

Pandas来更新数据的值长短常轻易的!这是办理此类数据处理赏罚使命的优化要领。
3.在Python中向量化你的函数
挣脱慢轮回的另一种要领是对函数举办向量化处理赏罚。这意味着新建设的函数将应用于输入列表,并将返回功效数组。Python中的向量化可以加快计较
让我们在沟通的Twitter Sentiment Analysis数据集对此举办验证。
- '''
- 优化要领:向量化函数
- '''
- # 导入库
- import pandas as pd
- import numpy as np
- import time
- import math
- data = pd.read_csv('train_E6oV3lV.csv')
- # 输出面部信息
- print(data.head())
- def word_count(x) :
- return len(x.split())
- # 行使Dataframe iterrows 计较词的个数
- print('nnUsing Iterrowsnn')
- start_time = time.time()
- data_1 = data.copy()
- n_words = []
- for i, row in data_1.iterrows():
- n_words.append(word_count(row['tweet']))
- data_1['n_words'] = n_words
- print(data_1[['id','n_words']].head())
- end_time = time.time()
- print('nTime taken to calculate No. of Words by iterrows :',
- (end_time-start_time),'seconds')
- # 行使向量化要领计较词的个数
- print('nnUsing Function Vectorizationnn')
- start_time = time.time()
- data_2 = data.copy()
- # 向量化函数
- vec_word_count = np.vectorize(word_count)
- n_words_2 = vec_word_count(data_2['tweet'])
- data_2['n_words'] = n_words_2
- print(data_2[['id','n_words']].head())
- end_time = time.time()
- print('nTime taken to calculate No. of Words by numpy array : ',
- (end_time-start_time),'seconds')
难以置信吧?对付上面的示例,向量化速率进步了80倍!这不只有助于加快我们的代码,并且使其变得更整洁。
4. Python中的多历程
多历程是体系同时支持多个处理赏罚器的手段。
在这里,我们将流程分成多个使命,而且全部使命都独立运行。当我们处理赏罚大型数据集时,纵然apply函数看起来也很慢。
因此,让我们看看怎样操作Python中的多历程库加速处理赏罚速率。 (编辑:湖南网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|