内容简介:作者:Revert 编译:1+1=6
标星★ 置顶 公众号 爱你们 ♥
作者:Revert 编译:1+1=6
1
用df.groupby ().iter ()分析数据样本
与Excel相比,在Jupyter Notebook中逐行或逐组地查看数据集通常比较困难。一个有用的技巧是 使用生成器并使用 Ctrl + Enter 而不是 Shift + Enter 来迭代地查看同一个单元格中的不同样本。
首先,使用 . g roupby() (或 .iterrows() )生成器创建一个单元格,并添加 ._ iter__() :
generator = df.groupby(['identifier']).__iter__()
然后,使用键盘快捷键 Ctrl + Enter ,尽可能多地运行以下单元格,以观察对你来说最重要的数据:
group_id, grouped_data = generator.__next__() print(group_id) grouped_data
下面是一个分析泰坦尼克号数据集中的乘客的例子,这些乘客的机票号码完全相同。你没有能力把每一组乘客单独分开,所以使用这种方法可以让你用一种非常简单的方法分析每一组乘客:
2
用于数据探索和数据质量评估技巧
在数据科学中,我们常常倾向于从头开始编写我们的数据分析代码。因为所有的数据集都是不同的。然而,有一个神奇的 pandas_profiling 包使得这种逻辑毫无意义。这个包实际上自动化了数据探索和数据质量评估步骤!看一看:
显然,它不能解决所有的数据分析问题,例如,如果数据中有文本变量。但它应该是你开始分析任何数据集的方式!
3
多重chain
一旦你理解了可以使用链接方法组合多个操作,Pandas就变得非常有趣。链接基本上是在相同的代码“行”中添加操作。
运行下面的代码:
-
在数据集中添加新列( .merge )
-
计算女乘客比例( .apply(female_proportion) )
-
乘客人数超过一人的团体( df.Ticket.value_counts()>1 )
-
拥有相同的票号( .groupby('Ticket ') )
我们不需要创建新的dataframes,新的变量等任何新的东西。链接方法允许你把你的想法“翻译”成实际的操作。
def female_proportion(dataframe): return (dataframe.Sex=='female').sum() / len(dataframe) female_proportion(df)
df.merge( df.loc[ df.Ticket.isin( df.Ticket.value_counts().loc[ df.Ticket.value_counts()>1 ].index ) ].groupby('Ticket').apply(female_proportion) \ .reset_index().rename(columns={0:'proportion_female'}), how='left', on='Ticket' )
下面的例子也是chain方法的一个很好的例子:
4
绘制系数/特征重要性与风格
如果你在做机器学习,如果用外行的话来解释清楚你的机器学习模型你觉得特别困难。 这里有一个方法可以帮助你,那就是 在你的模型中有一个很好的视觉系数或者特征重要性。
以下是我们一直在重复使用的可视化结果(避免重新造轮子):
pd.DataFrame({ 'variable': variables, 'coefficient': model.coef_[0] }) \ .round(decimals=2) \ .sort_values('coefficient', ascending=False) \ .style.bar(color=['grey', 'lightblue'], align='zero')
结果如下:
变量是根据系数(或变量重要性)进行 排序 的,彩色条允许我们快速找到最重要的变量。Pclass列有最大的(负)系数,它的绝对值是第二大的系数Embarked_Q的两倍。
5
sklearn pandas
如果你是一名Pandas爱好者,你会不止一次地意识到,与Pandas DataFrame和sklearn联合并不总是最佳选择。但不要就此止步。一些贡献者创建了sklearn_panda,它介于这两个包之间,为他们架起桥梁。它用一个Pandas友好的 DataFrameMapper 替换了sklearn的 ColumnTransformer 。
from sklearn.impute import SimpleImputer from sklearn.preprocessing import OneHotEncoder from sklearn.preprocessing import MinMaxScaler, StandardScaler from sklearn_pandas import DataFrameMapper from category_encoders import LeaveOneOutEncoder imputer_Pclass = SimpleImputer(strategy='most_frequent', add_indicator=True) imputer_Age = SimpleImputer(strategy='median', add_indicator=True) imputer_SibSp = SimpleImputer(strategy='constant', fill_value=0, add_indicator=True) imputer_Parch = SimpleImputer(strategy='constant', fill_value=0, add_indicator=True) imputer_Fare = SimpleImputer(strategy='median', add_indicator=True) imputer_Embarked = SimpleImputer(strategy='most_frequent') scaler_Age = MinMaxScaler() scaler_Fare = StandardScaler() onehotencoder_Sex = OneHotEncoder(drop=['male'], handle_unknown='error') onehotencoder_Embarked = OneHotEncoder(handle_unknown='error') leaveoneout_encoder = LeaveOneOutEncoder(sigma=.1, random_state=2020) mapper = DataFrameMapper([ (['Age'], [imputer_Age, scaler_Age], {'alias':'Age_scaled'}), (['Pclass'], [imputer_Pclass]), (['SibSp'], [imputer_SibSp]), (['Parch'], [imputer_Parch]), (['Fare'], [imputer_Fare, scaler_Fare], {'alias': 'Fare_scaled'}), (['Sex'], [onehotencoder_Sex], {'alias': 'is_female'}), (['Embarked'], [imputer_Embarked, onehotencoder_Embarked]), (['Embarked_Pclass_Sex'], [leaveoneout_encoder]) ], df_out=True) mapper.fit(X=train, y=train['Survived'])
下面是使用. fit ()方法后的输出示例:
6
tqdm
在处理大型数据集时,数据操作需要时间。 使用tqdm来跟踪你的代码是否正在实际运行,以及它需要多长时间 ,而不是在你的Jupyter Notebook无聊的等待,而不知道发生了什么。 对于运行速度太慢的脚本,这也是一种尽早中止的好方法。
from tqdm import notebook notebook.tqdm().pandas()
现在所有的Pandas DataFrame 都有了新的方法:
-
.progress_apply, .progress_applymap
-
.progress_map
它们与 apply、 applymap 和 map 一样,只是它们将绘制一个进度条。很酷!
7
使用.to clipboard()粘贴数据到Excel中
如果你是Excel的忠实用户, 尽管Pandas有许多选项,但是通过最少的编码很难获得类似的输出水平。
有一件事可以这么干,那就是把我们的结果导出到Excel中。但是 没有使用.to_excel方法 。相反,我们使用更流畅的 .to_clipboard(index=False) 将数据复制到剪贴板。然后在Excel中使用Ctrl + V将数据粘贴到当前电子表格中。
2020年第 78 篇文章
量化投资与机器学习微信公众号,是业内垂直于 Quant、MFE、 Fintech、AI、ML 等领域的 量化类主流自媒体。 公众号拥有来自 公募、私募、券商、期货、银行、保险资管、海外 等众多圈内 18W+ 关注者。每日发布行业前沿研究成果和最新量化资讯。
你点的每个“在看”,都是对我们最大的鼓励
以上所述就是小编给大家介绍的《提高效率,拒绝重复!7个Pandas数据分析高级技巧》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- 5个好用的可视化数据平台,让你的数据分析更高效率、高逼格
- 学霸君陈锐锋谈AI教育落地:用数据分析瓶颈,优化学习效率 | 2018 T-EDGE
- 剑指offer题解笔记:时间效率和空间效率的平衡
- Kubernetes云上效率方法论,10倍研发效率提升
- 领导怼程序员:效率高不是不加班的理由!程序员:那降低效率
- 浅谈 “效率” 提升
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
x86/x64体系探索及编程
邓志 / 电子工业出版社 / 2012-10-1 / 119.00元
本书是对Intel手册所述处理器架构的探索和论证。全书共五大部分,从多个方面对处理器架构相关的知识进行了梳理介绍。书中每个章节都有相应的测试实验,所运行的实验例子都可以在真实的机器上执行。 通过阅读本书,读者应能培养自己动手实验的能力。如果再有一些OS方面的相关知识,基本上就可以写出自己简易的OS核心。 本书适合有一定的x86基础知识,且对了解处理器架构及编程感兴趣的读者阅读。一起来看看 《x86/x64体系探索及编程》 这本书的介绍吧!