learn pandas基础操作

2017-07-20  本文已影响0人  六六的建斌

整理的这些东动为的是让自己加深印象,就像一本字典一样可以随时查阅吧。没别的意思

df.isnull()   输出的是布尔值

df.isnull().sum()  每一列的空值的数量加总     相当于  df.count()

df.isnull().sum().sum()   全部的数据的空值数量

df.notnull()    输出的也是布尔值,,和最上面的那个相反

dropping missing     丢掉缺失值

df.c4[df.c4.notnull()]    选择c4列的非空值  df.c4.dropna()   效果一样 但原数组不改变,只复制一份值

df.dropna(how = 'all')          df.dropna(how='all', axis=1)    默认是对行进行操作

df2.dropna(how='any', axis=1)

df.dropna(thresh=5, axis=1)  设定删除的阈值  Na Ns don't count as an item in calculating

Filling in missing data   填充缺失值                 空值不再计算内容的范围里面

filled = df.fillna(0)         用0填充所有缺失值

df.fillna(0, limit=2)     填充前面2个

df.c4.fillna(method="ffill")  向前填充, 最后一个为空值

  pd.ffill() and pd.bfill()   和前面等价

fill_values = pd.Series([100, 101, 102], index=['a', 'e', 'g'])

df.c4.fillna(fill_values)    用标签填充

df.fillna(df.mean())           均值填充

s = pd.Series([1, np.nan, np.nan, np.nan, 2])

s.interpolate()  线性插入支        如(2.0 – 1.0)/(5-1) = 0.25

ts.interpolate(method="time")    s.interpolate(method="values")    也一样

Handling duplicate data         处理重复的数据

data.duplicated()                   返回的是布尔值。是否是重复数据

data.drop_duplicates()          留的是每行的第一个重复值

data.drop_duplicates(take_last=True)    留的是最后一个

data.drop_duplicates(['a', 'b'])   对特定的列筛选

Transforming Data         数据转换

x.map(y)                              映射          

s.replace(2, 5)      在Series中表示标签为2的值  替换  为5

s.replace({0: 10, 1: 100})        用字典替换

df.replace({'a': 1, 'b': 8}, 100)   在DataFrame中,表示a中的1,b列中的8 替换为100

s = pd.Series(np.arange(0, 5))     s.apply(lambda v: v * 2)

df.apply(lambda col: col.sum())    计算每列的和

df.apply(lambda row: row.sum(), axis=1)     同理 行

df['interim'] = df.apply(lambda r: r.a * r.b, axis=1)     新列 并创建值

df['result'] = df.apply(lambda r: r.interim + r.c, axis=1)

df.a = df.a + df.b + df.c  不创建新列,在原列的基础上增加数学操作运算

df.dropna().apply(lambda x: x.sum(), axis=1)  除空值外的行的和

    use applymap to format all items of the Data Frame

df.applymap(lambda x: '%.2f' % x)   整个数据都转化为保留2位小数的浮点数 对整体操作

Combining and Reshaping   合并与重组

pd.concat(objs, axis=0,join='outer', join_axes=None, ignore_index=False,      keys=None, levels=None, names=None, verify_integrity=False) 所有参数

pd.concat([df1, df2])   注意索引是源数列的  没有合并

c = pd.concat([df1, df2], keys=['df1', 'df2'])     指定属于哪张表

pd.concat([df1, df2], axis=1)    纵向合并  axis指定轴向

pd.concat([df1, df3], axis=1)

pd.concat([df1, df3], axis=1, join='inner') 

Pivoting     视图

加上join参数的属性,如果为’inner’得到的是两表的交集,如果是outer,得到的是两表的并集。In[28]: pieces = {'x': df1,'y': df2,'z': df3}

In[29]: result = pd.concat(pieces)   传入字典增加分组建

df1.append(df2, ignore_index=True)

sensor_readings[sensor_readings['axis'] == 'X']   只选择一列的某值显示



和透视的功能差不多,不过只是透视的一部分,stack表示把列变为索引,另外一个相反

df = pd.Data Frame({'a': [1, 2]}, index={'one', 'two'})

stacked1 = df.stack()

Grouping and Aggregating  Data 这个知道有用,但还没用过过

The split, apply, and combine (SAC)   pattern   分,聚  和

grouped = sensors.groupby('sensor')   返回一个DataFrame  不返回值

grouped.size()      grouped.count()    grouped.get_group('accel')

mcg = sensors.groupby(['sensor', 'axis'])     两列同时操作

print_groups(mcg)         mcg.describe()    不同类别的描述

mig_l12.agg(np.mean)    求均值,分组后的

sensors.groupby(['sensor', 'axis'],as_index=False).agg(np.mean)

grouped.transform(lambda x: x + 10)

filled_Na Ns = grouped.transform(lambda x: x.fillna(x.mean()))

f = lambda x: x.Values.count() > 1

df.groupby('Label').filter(f)    必须指定列

f = lambda x: x.Values.isnull().sum() == 0

df.groupby('Label').filter(f)   意思都懂的  就是字面意思

f = lambda x: x.Values.count() > 1

df.groupby('Label').filter(f, dropna=False)

bins = pd.cut(dist, 5)    切分数据

pd.cut(dist, 5, right=False).categories

ranges = [6, 12, 18, 35, 50]

agebins = pd.cut(ages, ranges)

agebins.describe()

qbin = pd.qcut(dist, 5)

上一篇 下一篇

猜你喜欢

热点阅读