大数据,机器学习,人工智能人工智能/模式识别/机器学习精华专题呆鸟的Python数据分析

《利用Python进行数据分析》-数据规整

2019-08-06  本文已影响15人  皮皮大
import numpy as np 
import pandas as pd
import matplotlib.pyplot as plt

层次化索引hierarchical indexing

# 创建S:索引是一个数组组成的列表
data = pd.Series(np.random.randn(9),
                 index=[['a', 'a', 'a', 'b', 'b', 'c', 'c', 'd', 'd'],
                        [1, 2, 3, 1, 3, 1, 2, 2, 3]])
data
image.png
data['b']

# 部分索引选取数据子集
# 切片形式
data['b':'c']

# 列表形式
data.loc[['b', 'c']]
image.png
data.loc[['b', 'd']]
data.loc[:, 2]
image.png
# 对于DF类型数据
frame = pd.DataFrame(np.arange(12).reshape((4, 3)),
                     index=[['a', 'a', 'b', 'b'], [1, 2, 1, 2]],
                     columns=[['Ohio', 'Ohio', 'Colorado'],
                              ['Green', 'Red', 'Green']])
frame

# 索引设置名字
frame.index.names = ['key1', 'key2']
# 属性设置名字
frame.columns.names = ['state', 'color']
frame
image.png image.png

重排与分级排序

image.png
# level=0 通过第一层索引key1排序
frame.sort_index(level=0)

# level=1 通过第一层索引key2排序
frame.sort_index(level=1)
image.png
image.png

根据级别统计求和

image.png image.png image.png

合并数据集

df1 = pd.DataFrame({'key': ['b', 'b', 'a', 'c', 'a', 'a', 'b'],
                    'data1': range(7)})
df2 = pd.DataFrame({'key': ['a', 'b', 'd'],'data2': range(3)})

# 默认根据重叠列名key根据进行合并
pd.merge(df1,df2)
pd.merge(df1, df2, on='key')
image.png

merge

image.png image.png image.png image.png image.png
image.png

索引行的合并

image.png

join()

image.png

轴向索引

image.png image.png image.png image.png

合并与重叠

索引全部或者部分重叠的两个数据

a = pd.Series([np.nan, 2.5, np.nan, 3.5, 4.5, np.nan],
              index=['f', 'e', 'd', 'c', 'b', 'a'])
b = pd.Series(np.arange(len(a), dtype=np.float64),
              index=['f', 'e', 'd', 'c', 'b', 'a'])

b[-1] = np.nan

np.where(pd.isnull(a), b, a)

# Series有⼀个combine_first⽅法
b[:-2].combine_first(a[2:])
image.png

重塑和轴向旋转

image.png
image.png
上一篇 下一篇

猜你喜欢

热点阅读