效率倍增!12 个必知必会的 Python 数据处理技巧!

Posted Python学习与数据挖掘

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了效率倍增!12 个必知必会的 Python 数据处理技巧!相关的知识,希望对你有一定的参考价值。

目前 Python 已经成为最受欢迎的程序设计语言之一。由于 Python 语言的简洁性、易读性以及可扩展性,用 Python 做科学计算的研究机构日益增多,很多知名大学已经采用 Python 来教授程序设计课程。

在日常工作中一些比较繁琐的数据处理逻辑,我们在 Python 中总能找到一些数据处理技巧,这些技巧节省我们大量的宝贵的时间并使自己的工作更简单。在这篇文章中,我将介绍我使用过的 23 个数据处理技巧,如果对你有所帮助,欢迎分享、点赞支持。

1、Pandas Cut and qcut

在pandas上,Cut命令可以创建等间距的箱子,但每个箱子中的采样频率不相等,qcut命令可以创建大小不等的箱子,但每个箱子中的采样频率相同,这两个函数在做特征工程分箱操作时是非常棒的技巧。

导入必要的库和数据:

import pandas as pd
import numpy as np
df_rollno = pd.DataFrame({'Roll No': np.random.randint(20, 55, 10)})
df_rollno


使用 cut 函数:

df_rollno['roll_no_bins'] = pd.cut(x=df_rollno['Roll No'], bins=[20, 40, 50, 60])


使用 qcut 函数:

pd.qcut(df_rollno['Roll No'], q=6)

2、并行操作

pandarallel 用于将计算分布到计算机上所有可用的CPU上,以显著提高速度。

安装 pandarallel

pip install pandarallel

导入必要的库

%load_ext autoreload
%autoreload 2
import pandas as pd
import time
from pandarallel import pandarallel
import math
import numpy as np
import random
from tqdm._tqdm_notebook import tqdm_notebook
tqdm_notebook.pandas()

初始化pandarallel

pandarallel.initialize(progress_bar=True)

df = pd.DataFrame({
    'A' : [random.randint(8,15) for i in range(1,100000) ],
    'B' : [random.randint(10,20) for i in range(1,100000) ]
})
def trigono(x):
    return math.sin(x.A**2) + math.sin(x.B**2) + math.tan(x.A**2)

没有并行化

%%time
first = df.progress_apply(trigono, axis=1)

没有并行化

%%time
first_parallel = df.parallel_apply(trigono, axis=1)

3、将列表中列表转换为列表

导入必要库

import itertools

建立一个列表

nested_list = [['Naina'], ['Alex', 'Rhody'], ['Sharron', 'Avarto', 'Grace']]

只需一步即可完成,转换如下

converted_list = list(itertools.chain.from_iterable(nested_list))
print(converted_list)

4、美化Dict

创建词典

l_dict = {'Student_ID': 4,'Student_name' : 'Naina', 'Class_Name': '12th' ,'Student_marks' : {'maths' : 92,
                            'science' : 95,
                            'computer science' : 100,
                            'English' : 91}
          }

使用pprint美化字典

import pprint
pprint.pprint(l_dict)

5、反转字典

创建字典

l_dict = {'Person_Name':'Naina',
           'Age' : 27,
           'Profession' : 'Software Engineer'
           }

反转字典

invert_dict = {values:keys for keys,values in l_dict.items()}
invert_dict

6、从文本中删除表情符号

Emoji_text = 'For example, 🤓🏃‍🏢 could mean “Iam running to work.”'
final_text=Emoji_text.encode('ascii', 'ignore').decode('ascii')
print("Raw tweet with Emoji:",Emoji_text)  
print("Final tweet withput Emoji:",final_text)

7、Pandas Profiling

Profiling 用于从数据帧或数据表生成概要报告。

安装配置文件:

pip install pandas-profiling

生成报告

import pandas as pd
import pandas_profiling
Youtube_data = pd.read_csv('/Users/priyeshkucchu/Desktop/USvideos.csv')
profiling_report = pandas_profiling.ProfileReport(Youtube_data)

8、日期分析器

解析日期

import datetime
import dateutil.parser
input_date = '04th Dec 2020'
parsed_date = dateutil.parser.parse(input_date)

指定格式的输出日期:

op_date = datetime.datetime.strftime(parsed_date, '%Y-%m-%d')
print(op_date)

9、Unique

import pandas as pd
import numpy as np
crime_data = pd.read_csv("/Users/priyeshkucchu/Desktop/crime.csv",\\ engine='python')
crime_data.head()


在“DISTRICT”列中显示唯一值:

crime_data["DISTRICT"].unique()

10、从文本中提取电子邮件

import re
Enquiries_text = 'For any enquiries or feedback related to our product,\\service, marketing promotions or other general support \\ matters. contactus@samsung.com’'

使用正则表达式提取电子邮件:

re.findall(r"([\\w.-]+@[\\w.-]+)", Enquiries_text)

11、Crosstab

在Pandas中,此函数用于计算两个或多个因子的简单交叉表。

导入必要的库:

import pandas as pd
data = pd.read_csv('/Users/priyeshkucchu/Desktop/loan_train.csv',\\ index_col = 'Loan_ID')
pd.crosstab(data["Credit_History"],data["Self_Employed"],margins=True, normalize = False)

12、pivot table

在Pandas中,pivot table函数将数据帧作为输入,并执行分组操作,以提供数据的多维摘要。

数据展示

import pandas as pd
import numpy as np
loan = pd.read_csv('/Users/priyeshkucchu/Desktop/loan_train.csv', index_col = 'Loan_ID')
loan.head()

数据透视表

pivot = loan.pivot_table(values = ['LoanAmount'],index = ['Gender', 'Married','Dependents', 'Self_Employed'], aggfunc = np.median)

技术交流

欢迎转载、收藏本文,码字不易,有所收获点赞支持一下!

为方便进行学习交流,本号开通了技术交流群,添加方式如下:

直接添加小助手微信号:pythoner666,备注:CSDN+机器学习,或者按照如下方式(发送至微信,识别即可)添加均可!
在这里插入图片描述

以上是关于效率倍增!12 个必知必会的 Python 数据处理技巧!的主要内容,如果未能解决你的问题,请参考以下文章

39个必知必会的SQL 性能调优方法

省时提效!5个必知必会的 SQL 窗口函数!

10个必知必会的统计学问题

Dubbo35个必知必会的点,面试总问到!

ElasticsearchElasticsearch 25 个必知必会的默认值

好奇?!Elasticsearch 25 个必知必会的默认值