【数据挖掘实战】Pandas, Sklearn, Python

Detecting Anomalous Patients

1. Pandas

1.0 SettingwithCopyWarning (重要)

Pandas 中 SettingwithCopyWarning 的原理和解决方案

SettingWithCopyWarning 的基础复杂性是 Pandas 库中为数不多的坑。这个警告的源头深深嵌在库的底层中,不应被忽视。Jeff Reback 自己的话 ,“我没有找到任何你应该忽略这个警告的情况。如果你做某些类型的索引时不起作用,而其他情况下起作用,你是在玩火。”
幸运的是,解决警告只需要识别链式赋值并修复。如果整篇文章你只了解到了一件事,那么就应该是这一点。

另外,要分清什么时候用 .loc 或 .iloc,什么时候直接用中括号[ ]。

一般,用 .loc 或 .iloc 才是在原表格上更改,直接用中括号[ ]是新建了一个复制表格在上面更改。

1.1.1 merge

DataFrame.merge(right, how='inner', on=None, left_on=None, right_on=None, 
		left_index=False, right_index=False, sort=False, suffixes=('_x', '_y'), 
		copy=True, indicator=False, validate=None)

上述为官方文档提供的格式,更常用的格式为:

data = pd.merge(data1, data2, how='inner', on=['column1', 'column2'])

官方文档

简明示例

1.1.2 append

可与merge对照学习。操作很简单,直接把表2接在表1下面。

patient_time = patient1.append(patient2)

1.2 read_table

claim_dat = pd.read_table(claim_path, header=0, sep=',')

官方文档

1.3 apply

DataFrame.apply(func, axis=0, broadcast=None, raw=False, reduce=None,
				result_type=None, args=(), **kwds)

官方文档

简明示例

1.4 groupby

官方文档

pandas聚合和分组运算——GroupBy技术(1)

Pandas之groupby( )用法笔记

1.5 astype

1.6 sort_values

result = result.sort_values(by=['PatientID','TimePeriod'])

1.7 loc与iloc

Pandas中loc,iloc与直接切片的区别

1.8 diff

Pandas学习之差分函数diff

1.9 drop_duplicates

官方文档

1.10 to_csv

pandas的to_csv()使用方法

比较炫酷的是,to_csv()方法也可以保存为其他格式文件,如dat:

DataFrame.to_csv('D:/temp/Result.dat')

1.11 删除行和列

pandas dataframe 删除行和列

1.12 筛选想要的行

no_claims = patient_outer[patient_outer['Period']!='1']
no_claims = no_claims[no_claims['Period']!='2']

1.13 逐行操作

其实不需要新的函数,不过是循环结构的读取罢了:

for indexs in (test.index-1):
    if test.iloc[indexs+1, -1] != 0.0:
        test.iloc[indexs, -1] = test.iloc[indexs+1, -1]

1.14 str.extract() + 正则化

str.extract() + 正则化,提取字符串中指定信息非常好用。

(比如从不规则的 “字母+数字” 字符串中提取数字)

pandas的分列之不规则字符串及str.extract()

1.15 pd.to_numeric() 字符串转数字

官方文档

1.16 unique()

官方文档

2. Sklearn

2.1 KMeans

from sklearn.cluster import KMeans
estimator = KMeans(n_clusters=3)
array = p1_dat.iloc[:, 1:-1].values
estimator.fit(array)
p1_dat["ClusterID"] = estimator.labels_

3. Python

3.1 split

3.2 lambda

month_dict = {'Jan':1,'Feb':1,'Mar':1,'Apr':1,'May':1,'Jun':1,
              'Jul':2,'Aug':2,'Sep':2,'Oct':2,'Nov':2,'Dec':2}
claim['TimePeriod'] = claim['FirstDayOfStay'].apply(lambda x: month_dict[str(x).split('-')[1]])

3.3 numpy创建整数数组

p = np.ones([4, 3], int)

3.4 格式化

change[i,j] = cluster['{0}-{1}'.format(i,j)].sum()

4. 自组织映射网络(SOM)

自组织映射网络(SOM)介绍与Python实现

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值