[python] [转载] numpy,pandas数据处理小技巧

Edward.Fu

今日是端午4天假期的最后一天,自己的2台电脑一台在处理数据,另一台电源适配器也坏掉了。感觉闲来无事,在此就简单聊聊 numpy 和 pandas 的各种冷知识、小技巧和疑难杂症。

个人觉得关于 numpy 和 pandas 的坑太大,不好填,在此就不系统的介绍了,各位可以买些这块的资料先自己看看。

这里就着重聊聊一些使用过程中常用到但教科书里找不着的问题,省的各位朋友还跑去stackoverflow找答案。

问题一、dataframe里面.values,.iloc,.ix,.loc的区别?

只有values是将原本dataframe数据强制转化为numpy格式的数据来索引,其他3个都是对dataframe本身的数据来索引,其中iloc是对基于values的位置来索引调用,loc是对index和columns的位置来索引,而ix则是先用loc的方式来索引,索引失败就转成iloc的方式;

问题二、可否有两层,或2层以上的columns或index?有的话如何索引?

可以,索引的话如果用loc或ix,则默认是用第一层的index或columns,最简单的方式是类似于这样:

example.loc[index1, columns1].loc[index2, columns2]

问题三、list, dict, numpy.ndarray, dataframe数据格式如何转换?

1. list转化为numpy.ndarray:

np.array(example)

2. numpy.ndarray转化为list:

list(example)

3. dict转化为dataframe:

example['a'] = {'bb':2, 'cc':3} eee = pd.DataFrame(example)

4. numpy.ndarray转化为dataframe:

pd.DataFrame(example)

5. dataframe转化为numpy.ndarray:

example.values[:, :]

问题四、numpy.ndarray和dataframe如何填补nan,inf?

1. 对于numpy.ndarray来说:

example = np.where(np.isnan(example), 0, example) example = np.where(np.isnan(example), 0, example)

2. 对于dataframe来说:

既可以用example.fillna(),还可以用example.replace(a, b)

问题五、各种OI的效率快慢问题?

1. npy读写效率最高,但最费硬盘空间,比如np.load(), np.save();

2. csv其次,比如pd.Dataframe.to_csv(),pd.load_csv();

3. txt读写,当然也可以很快,但是需要频繁的split,对格式规范的数据比较麻烦;

4. 至于简单的excel和word,可以用xlrd,xlwt来操作;

问题六、关于常见的os操作,包括新建文件夹、遍历文件夹的操作问题?

1. 新建文件夹:

if not os.path.isdir(path_out): os.makedirs(path_out)

2. 遍历所有文件和子文件夹:

for a, b, filenames in os.walk(path_data): for filename in filenames:

只遍历当前文件,不包含子文件夹:

for a, b, filenames in os.walk(path_data): for filename in filenames: if a == path_data:

问题七、numpy.ndarray和dataframe如何选取满足条件的行和列数据?

1. 根据新的columns来选取:

frame_[newcolumns]

2. 根据新的index来选取:

frame_[frame_.index.isin(newindex)]

3. 根据某一行或者列的条件来选取:

假如是根据dataframe的第一列,必须大于start_time这个常数,frame_ = frame_.ix[:, frame_.ix[0, :] >= start_date] 或者是根据dataframe的第一行,必须大于start_time这个常数,frame_ = frame_.ix[frame_.ix[:, 0] >= start_date, :]

问题八、如何计算相关性矩阵?

将y和所有x放入到sample = numpy.ndarray下,然后直接np.corrcoef(sample ),默认的是皮尔森相关系数,当然,也可以用ranked correlation,也就是spearman correlation,可以直接用scipy.stats.spearmanr。

问题九、如何取出一串字符串里面的字母或者数字?

1. 取出example里面的数字: int(''.join(x for x in example if x.isdigit())) 2. 取出example里面的字母: (''.join(x for x in example if x.alpha()))

问题十、各种merge操作?

1. 纵向merge 格式为numpy.ndarray的数据:

np.hstack((example1, example2))

2. 纵向merge 格式为dataframe的数据,并根据dataframe的index来merge,merge后保留原本各自列的所有index,其他没有该index的列则对应数值为nan:

pd.concat([example1, example2], axis=1)

3. 纵向merge,但是只保留公共的index行:

example.sort_index(axis=1, inplace=True)

4. 横向merge格式为numpy.ndarray的数据:

np.vstack((example1, example2))

5. 横向merge 格式为dataframe的数据,并根据dataframe的column来merge,merge后保留原本的index和columns,其他没有该index或columns的列则对应数值为np.nan:

pd.concat([example1, example2], axis=0)

6. 横向merge,但是只保留公共的columns列:

example.sort_index(axis=0, inplace=True)

问题十一、对dataframe数据的index统一加一个后缀

比如对原本dataframe下的index=[‘aa’, 'cc', 'dddddd']的,统一加上一个_5m的后缀,通常的操作大家一般就是直接example.index = [x + '_5m' for x in example.index],这个其实会产生些小问题,因为默认的index是pandas.indexes.base.Index,这个格式可能会默认index里面数据的长度是确定的,导致加_5m后缀失败,所以需要先把格式强制转化为list, 像这样:example.index = [x + '_5m' for x in list(example.index)]

先就这些吧,其他的想到再慢慢加。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,744评论 6 502
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,505评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,105评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,242评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,269评论 6 389
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,215评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,096评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,939评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,354评论 1 311
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,573评论 2 333
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,745评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,448评论 5 344
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,048评论 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,683评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,838评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,776评论 2 369
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,652评论 2 354

推荐阅读更多精彩内容