zwPython.com研习社

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 2684|回复: 0

十分钟搞定pandas

[复制链接]

233

主题

240

帖子

5503

积分

超级版主

Rank: 8Rank: 8

积分
5503
发表于 2020-9-14 17:30:32 | 显示全部楼层 |阅读模式
本帖最后由 ziwang 于 2020-9-15 11:41 编辑

十分钟想搞定pandas?



用Python做数据分析,Numpy,Pandas,matplotlib是怎么也绕不开的三个包,我最开始学习pandas是看的《利用Python进行数据分析》,看了好几遍,不是从头到尾看了好几遍,是顺着看、挑着看、精读略读强行读,一直没坚持完整过一遍。
后来发现了广受好评的《10分钟搞定pandas》。这是官方出品的,于是我马上动手跟着做,才发现作者就是个标题党,花了一个多小时才过完一遍。我觉得书名应该是《(每天)10分钟(一周)搞定pandas》。标题党归标题党,内容还是很好的,就是我觉得还是有点偏长,尤其对于像我这样学习自制力极差的同学。
所以这篇文章,我总结了我认为的Pandas最常用的功能,供大家学习借鉴。
  • 导入包
import pandas as pd import numpy as np
  • 导入数据
#默认utf-8,gbk对中文的支持更好pd.read_csv(filename,encoding='gbk')#key是列名,value是数据,从字典导入数据需要指定indexdict1 = {'a':1,'b':2}df = pd.DataFrame(dict1,index=[0])
  • 查看数据
#行数、列数df.shape[0]df.shape[1]#前几行,后几行,默认为5df.head()df.tail(3)#数据汇总统计df.describe()#数据概况df.info()#列名df.columns#数据类型df.dtypes#各列平均值df.mean()
  • 数据选取
#按列名查看某列df[col_name]df.col_name#查列名看多列df[[col1,col2]]#按索引查看某行,第一行:df.iloc[0]#按索引查看某行某列,三行四列那个元素df.iloc[2,3]
  • 数据合并
#按行拼接pieces = [df[2:20],df[23:30],df[35:40]]
下面这句replace知乎一直报未知错误(醉了,我在整篇文章中用二分法试出来两句),只能截图
#按列拼接left = pd.DataFrame({'key': ['foo', 'bar'], 'col1': [1, 2]})right = pd.DataFrame({'key': ['foo', 'bar'], 'col2': [4, 5]})pd.merge(left,right,on='key')#增加一列df = pd.DataFrame(np.random.randn(8, 4), columns=['A','B','C','D'])extra = df.iloc[-1]data = df.append(extra)

  • 数据清理 (注意: 修改DataFrame要赋值)
#检查是否空值,返回布尔值(True,False)df.isnull()#返回各列空值的个数df.isnull().sum()#处理空值,用x替换空值df = df.fillna(x)#删除包含空值的行df = df.dropna()#删除包含空值的列df = df.dropna(axis=1)
  • 数据处理
#选择某列大于1的行df[df[colname]>1]#选择某列包含x或者y字段的行,pandas有很多字符串处理函数df[df[colname].str.contains(x|y)]

下面这句replace知乎一直报未知错误(再次醉了),只能截图
#转换数据类型df.num = df.num.astype(float)#查看某列的唯一值的个数df.colname.value_counts()#按照某列排序(默认升序)df.sort_values(by = colname,ascending=True)#应用函数,简单的可以用lambdadf.apply(lambda x:x.max()-x.min())#复杂的可以先定义好函数def func():   passdf.apply(func)#也可以用numpy自带的,例如cumsum累加df.apply(np.cumsum)
  • 分组聚合
#准备数据df = pd.DataFrame({'A' : ['foo', 'bar', 'foo', 'bar',                            'foo', 'bar', 'foo', 'foo'],                     'B' : ['one', 'one', 'two', 'three',                            'two', 'two', 'one', 'three'],                     'C' : np.random.randn(8),                     'D' : np.random.randn(8)})#对两列进行分组并求均值,类似于SQL里的group bydf.groupby(['A','B']).mean()#数据透视表,以col1为行,col2为列,取col3和col4的最大值,可以参考Excel的数据透视表df.pivot_table(index=col1,columns=col2,values=[col3,col4],aggfunc=max)

Pandas最常用的函数方法就介绍到这里了!强烈建议各位同学过一遍官方的【10 Minutes to pandas】!



【极宽QQ群】
群号:1057170501 ,zwPython.com学习QQ群,面向py初学者和大众小白用户。
群号:124134140,TOP极宽金融量化,三千人超大QQ群,面向专业金融实盘用户。
群号:699266891,TFB极宽足球大数据QQ群
群号:790548107,FASTAI智能量化QQ群。
【微信公众号】
请大家关注TOP极宽量化公众号,大量原创Python量化技术
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|zwPython.com研习社

GMT+8, 2023-4-1 11:44 , Processed in 0.025284 second(s), 4 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表