pandas基本操作及拼接

  • Post author:
  • Post category:其他

本文参考W3Cschool——“pandas中文教程”,进行归纳学习。附
原教程链接,需要自取。

什么是pandas?

pandas是在numpy的基础上开发的数据处理工具包,提供了快速、灵活的数据结构。

它适用于处理一下类型的数据:

  • 与SQL与Excel表类似,含异构列的表格数据;
  • 有序和无序的时间序列数据;
  • 带行列标签的矩阵数据;
  • 任意其他形式的观测、统计数据集,且不必事先标记。

pandas的主要数据结构:

  • series(一维数据,同构数组)
  • DataFrame(二维数据,带标签的、大小可变、异构表格)

一、快速入门

1. 用值列表生成Series
>>> series = pd.Series([1, 3, 5, np.nan, 6, 8])
>>> series
0    1.0
1    3.0
2    5.0
3    NaN
4    6.0
5    8.0
dtype: float64
2. 生成DataFrame
  • 用带索引和标签的Numpy数组生成DataFrame
In [5]: dates = pd.date_range('20130101', periods=6)

In [6]: dates
Out[6]: 
DatetimeIndex(['2013-01-01', '2013-01-02', '2013-01-03', '2013-01-04',
               '2013-01-05', '2013-01-06'],
              dtype='datetime64[ns]', freq='D')

In [7]: df = pd.DataFrame(np.random.randn(6, 4), index=dates, columns=list('ABCD'))

In [8]: df
Out[8]: 
                   A         B         C         D
2013-01-01  0.469112 -0.282863 -1.509059 -1.135632
2013-01-02  1.212112 -0.173215  0.119209 -1.044236
2013-01-03 -0.861849 -2.104569 -0.494929  1.071804
2013-01-04  0.721555 -0.706771 -1.039575  0.271860
2013-01-05 -0.424972  0.567020  0.276232 -1.087401
2013-01-06 -0.673690  0.113648 -1.478427  0.524988
  • 用Series字典对象生成DataFrame
In [9]: df2 = pd.DataFrame({'A': 1.,
                   			'B': pd.Timestamp('20130102'),
                   			'C': pd.Series(1, index=list(range(4)), dtype='float32'),
                   			'D': np.array([3] * 4, dtype='int32'),
                    		'E': pd.Categorical(["test", "train", "test", "train"]),
                    		'F': 'foo'})


In [10]: df2
Out[10]: 
     A          B    C  D      E    F
0  1.0 2013-01-02  1.0  3   test  foo
1  1.0 2013-01-02  1.0  3  train  foo
2  1.0 2013-01-02  1.0  3   test  foo
3  1.0 2013-01-02  1.0  3  train  foo
3. 查看数据
df.head()
df.tail()

# 显示索引与列名
df.index
df.columns

df.describe() # 可以快速查看数据的统计摘要:
4. 选择数据
  • 选择单列
df['A']
  • [ ]切片
df[0:3]
  • 按标签选择
# 用标签选择一行
df.loc[dates[0]]

# 用标签选择多列
df.loc[:, ['A', 'B']] # A, B两列的所有行

# 用标签切片
df.loc['20130102':'20130104', ['A', 'B']]
  • 按位置选择
df.iloc[3] # 第三行
df.iloc[3:5, 0:2] # 4,5行、1,2列
5. 缺失值

Pandas 主要用 np.nan 表示缺失数据。 计算时,默认不包含空值。

删除所有含有缺失值的行:

df.dropna(how = 'any')

填充缺失值

df.fillna(value = 5)

提取nan值的布尔掩码

pd.isna(df)
6. 统计

一般情况下,运算时排除缺失值。

  • 描述性统计
df.mean()
# 默认是按列求
df.mean(1) #按行求平均

二、pandas拼接操作

Pandas提供了concat,merge,join和append四种方法用于dataframe的拼接,其区别如下:

调用方法 使用场景 备注
result = df.concat([df1,df3], axis = 1) 可用于两个或多个df间行方向或列方向进行内联或外联拼接操作,默认行拼接,取并集 提供了参数(axis = 0 or 1)设置行/列拼接的方向
df1.append(df2, ingnore = True) 可用于df间行方向的拼接操作,默认 appendconcat的简略形式,只不过只能在跨行(axis = 0,即沿着列索引向下)上进行合并。 ②DataFrame和Series进行合并的时候需要使用参数ignore_index=True或者含有属性name
df.join(df2, how=’left’ ) 可用于df间列方向的拼接操作,默认左列拼接,how=’left’ 支持左联、右联、内联和外联四种操作类型
result = pd.merge(df1, df2,how=‘left’) 可用于两个df间列方向==(一般用join代替)==或行方向的拼接操作,默认列拼接,取交集(即:存在相同主键的df1和df2的列拼接 支持左联、右联、内联和外联四种操作类型

版权声明:本文为weixin_43226986原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。