pandas第一篇安装,概念,创建对象和基本属性

前言 使用pandas以及一些概念

前面已经系统的学习使用过mumpy,测试过了matplotlib。python数据分析三剑客numpy,pandas,matplotlib,本篇文章为pandas系列第一章,记述使用pandas过程中的问题。

pandas的一些说明

Pandas处理以下三个数据结构

  1. 系列(Series) Series 系列关键点:
    • 均匀数据
    • 尺寸大小
    • 不变数据的值可变
  2. 数据帧(DataFrame) dataframe 关键点:
    • 异构数据
    • 大小可变
    • 数据可变
  3. 面板(Panel) 面板是具有异构数据的三维数据结构。在图形表示中很难表示面板。但是一个面板可以说明为DataFrame的容器。关键点:
    • 异构数据
    • 大小可变
    • 数据可变
维数和描述考虑这些数据结构的最好方法是,较高维数据结构是其较低维数据结构的容器。 例如,DataFrame是Series的容器,Panel是DataFrame的容器。
数据结构维数描述
系列11D标记均匀数组,大小不变
数据帧2一般2D标记,大小可变的表结构与潜在的异质类型的列。
面板3一般3D标记,大小可变数组
构建和处理两个或更多个维数组是一项繁琐的任务,用户在编写函数时要考虑数据集的方向。 但是使用Pandas数据结构,减少了用户的思考。
1. 安装
pip3 install pandas
复制代码
2. 检测
>>> import pandas as pd
>>> pd.__version__
'0.24.2'
复制代码
  • 创建Series对象
>>> s = pd.Series([12,3,4,np.nan,4,7])
>>> s
0    12.0
1     3.0
2     4.0
3     NaN
4     4.0
5     7.0
dtype: float64
>>> type(s)
<class 'pandas.core.series.Series'>
复制代码
  • 带有日期时间标签的DataFrame对象
>>> dates = pd.date_range('20130101', periods=6)
>>> dates
DatetimeIndex(['2013-01-01', '2013-01-02', '2013-01-03', '2013-01-04',
               '2013-01-05', '2013-01-06'],
              dtype='datetime64[ns]', freq='D')
dt = pd.DataFrame(np.random.randn(6,4),index=dates,columns=list('abcd'))
>>> dt
                   a         b         c         d
2013-01-01  3.037169 -0.858770  0.146364 -0.095942
2013-01-02  0.537527  0.726589 -0.096588 -0.210670
2013-01-03  0.797981  1.234482 -0.742337 -0.884175
2013-01-04  0.354584 -0.321732 -0.692533 -1.058125
2013-01-05 -1.010910  2.169853 -0.681772 -0.237849
2013-01-06 -0.016872 -0.532582 -1.274204 -1.907988
复制代码
  • 通过传递可以转换为类似系列的对象的字典来创建DataFrame。使用这个dict对象变为数组:
df2 = pd.DataFrame({ 'A' : 1.,
                     'B' : pd.Timestamp('20170102'),
                     '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' })

# 头
print(df2.head())
# 尾数据
print(df2.tail(3))
# 索引
print(df2.index)
# 列明
print(df2.columns)
# 元素数据
print(df2.values)
# 数组描述
print(df2.describe())
# 转置
print(df2.T)
# 排序,按照索引
print(df2.sort_index(axis=1,ascending=False))
# 排序,按照值排序 
print(df2.sort_values(by='B'))
# 获取区块,索引一部分数据,按照列索引数据,分片获取位置
复制代码
  • 可以看到不同的数据类型:
>>> dt.dtypes
1      int64
2    float64
3    float64
4     object
dtype: object
复制代码
  • 选择和赋值标准的python、numpy表达式非常直观,并且便于交互工作.但是生产环境,我们推荐使用优化的pandas访问数据方法 .at .iat .loc .iloc等方法参考数据文档索引,选择数据,多索引,高级索引
# 使用下面的方式相当于生成一个series
print(df2['A'])
# 使用索引切片,[0:3]
# 打印2行数据
print(df2[0:2])
# 指定日期
dates = pd.date_range('20170101', periods=6)
df2 = pd.DataFrame(np.random.randn(6,4), index=dates, columns=list('ABCD'))
# 使用索引字段,分片索引数据
print(df2['20170102':'20170103'])
# 通过标签获取一整行的数据
df.loc[dates[0]]
# 通过标签选择多个轴上的数据
df.loc[:,['A','B']]
# 通过标签同时在两个轴上切片
df.loc['20170101':'20170103',['A','B']]
# 减少返回的对象大小
df.loc['20170101',['A','B']]
# 获取标量值
df.loc[dates[0],'A']
# 快速访问at
df.at[dates[0],'A']
# 按照位置选择 iloc
df.iloc[3]
# 通过整数切片
df.iloc[3:5,0:2]
# 通过整数位置获取分片参数
df.iloc[[1,2,4],[0,2]]
# 整行的切片
df.iloc[1:3,:]
# 整列切片
df.iloc[:,1:3]
# 获取具体位置
df.iloc[1,1]
# 布尔值索引
df[df.A >0]
复制代码

转载于:https://juejin.im/post/5d2757dde51d4556bc06700a

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值