Pandas进阶大神!从0到100你只差这篇文章!(一)

简介: Pandas进阶大神!从0到100你只差这篇文章!(一)


数据对象


pandas主要有两种数据对象:Series、DataFrame


注: 后面代码使用pandas版本0.20.1,通过import pandas as pd引入


1. Series


Series是一种带有索引的序列对象。


简单创建如下:


# 通过传入一个序列给pd.Series初始化一个Series对象, 比如lists1=pd.Series(list("1234"))print(s1)0    11    22    33    4dtype:object


2. DataFrame


类似与数据库table有行列的数据对象。


创建方式如下:


# 通过传入一个numpy的二维数组或者dict对象给pd.DataFrame初始化一个DataFrame对象
# 通过numpy二维数组import numpy as npdf1 = pd.DataFrame(np.random.randn(6,4))print(df1)    0   1   2   30   -0.646340   -1.249943   0.393323    -1.5618731   0.371630    0.069426    1.693097    0.9074192   -0.328575   -0.256765   0.693798    -0.7873433   1.875764    -0.416275   -1.028718   0.1582594   1.644791    -1.321506   -0.337425   0.8206895   0.006391    -1.447894   0.506203    0.977295
# 通过dict字典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' })print(df2)
    A   B   C   D   E   F0   1.0 2013-01-02  1.0 3   test    foo1   1.0 2013-01-02  1.0 3   train   foo2   1.0 2013-01-02  1.0 3   test    foo3   1.0 2013-01-02  1.0 3   train   foo


3. 索引


不管是Series对象还是DataFrame对象都有一个对对象相对应的索引,Series的索引类似于每个元素, DataFrame的索引对应着每一行。


查看:在创建对象的时候,每个对象都会初始化一个起始值为0,自增的索引列表, DataFrame同理。


# 打印对象的时候,第一列就是索引print(s1)0    11    22    33    4dtype: object
# 或者只查看索引, DataFrame同理print(s1.index)


增删查改


这里的增删查改主要基于DataFrame对象,为了有足够数据用于展示,这里选择tushare的数据。


1. tushare安装

ipinstall tushare


创建数据对象如下:


import tushare as tsdf = ts.get_k_data("000001")


DataFrame 行列,axis 图解:


image.png


image.png


2. 查询


查看每列的数据类型


# 查看df数据类型df.dtypesdate       objectopen        float64close        float64high         float64low          float64volume    float64code       objectdtype: object


查看指定指定数量的行:head函数默认查看前5行,tail函数默认查看后5行,可以传递指定的数值用于查看指定行数。


查看前5行df.head()date    open    close   high    low volume  code0   2015-12-23  9.927   9.935   10.174  9.871   1039018.0   0000011   2015-12-24  9.919   9.823   9.998   9.744   640229.0    0000012   2015-12-25  9.855   9.879   9.927   9.815   399845.0    0000013   2015-12-28  9.895   9.537   9.919   9.537   822408.0    0000014   2015-12-29  9.545   9.624   9.632   9.529   619802.0    000001# 查看后5行df.tail()date    open    close   high    low volume  code636 2018-08-01  9.42    9.15    9.50    9.11    814081.0    000001637 2018-08-02  9.13    8.94    9.15    8.88    931401.0    000001638 2018-08-03  8.93    8.91    9.10    8.91    476546.0    000001639 2018-08-06  8.94    8.94    9.11    8.89    554010.0    000001640 2018-08-07  8.96    9.17    9.17    8.88    690423.0    000001# 查看前10行df.head(10)date    open    close   high    low volume  code0   2015-12-23  9.927   9.935   10.174  9.871   1039018.0   0000011   2015-12-24  9.919   9.823   9.998   9.744   640229.0    0000012   2015-12-25  9.855   9.879   9.927   9.815   399845.0    0000013   2015-12-28  9.895   9.537   9.919   9.537   822408.0    0000014   2015-12-29  9.545   9.624   9.632   9.529   619802.0    0000015   2015-12-30  9.624   9.632   9.640   9.513   532667.0    0000016   2015-12-31  9.632   9.545   9.656   9.537   491258.0    0000017   2016-01-04  9.553   8.995   9.577   8.940   563497.0    0000018   2016-01-05  8.972   9.075   9.210   8.876   663269.0    0000019   2016-01-06  9.091   9.179   9.202   9.067   515706.0    000001


查看某一行或多行,某一列或多列


# 查看第一行df[0:1]    date    open    close   high    low volume  code0   2015-12-23  9.927   9.935   10.174  9.871   1039018.0   000001
# 查看 10到20行df[10:21]    date    open    close   high    low volume  code10  2016-01-07  9.083   8.709   9.083   8.685   174761.0    00000111  2016-01-08  8.924   8.852   8.987   8.677   747527.0    00000112  2016-01-11  8.757   8.566   8.820   8.502   732013.0    00000113  2016-01-12  8.621   8.605   8.685   8.470   561642.0    00000114  2016-01-13  8.669   8.526   8.709   8.518   391709.0    00000115  2016-01-14  8.430   8.574   8.597   8.343   666314.0    00000116  2016-01-15  8.486   8.327   8.597   8.295   448202.0    00000117  2016-01-18  8.231   8.287   8.406   8.199   421040.0    00000118  2016-01-19  8.319   8.526   8.582   8.287   501109.0    00000119  2016-01-20  8.518   8.390   8.597   8.311   603752.0    00000120  2016-01-21  8.343   8.215   8.558   8.215   606145.0    000001
# 查看看Date列前5个数据df["date"].head() # 或者df.date.head()0    2015-12-231    2015-12-242    2015-12-253    2015-12-284    2015-12-29Name: date, dtype: object
# 查看看Date列,code列, open列前5个数据df[["date","code", "open"]].head()    date    code    open0   2015-12-23  000001  9.9271   2015-12-24  000001  9.9192   2015-12-25  000001  9.8553   2015-12-28  000001  9.8954   2015-12-29  000001  9.545
相关文章
|
7月前
|
数据可视化 数据挖掘 数据处理
进阶 pandas DataFrame:挖掘高级数据处理技巧
【5月更文挑战第19天】本文介绍了Pandas DataFrame的高级使用技巧,包括数据重塑(如`pivot`和`melt`)、字符串处理(如提取和替换)、日期时间处理(如解析和时间序列操作)、合并与连接(如`merge`和`concat`),以及使用`apply()`应用自定义函数。这些技巧能提升数据处理效率,适用于复杂数据分析任务。推荐进一步学习和探索Pandas的高级功能。
|
5月前
|
数据处理 Python
数据科学进阶之路:Pandas与NumPy高级操作详解与实战演练
【7月更文挑战第13天】探索数据科学:Pandas与NumPy提升效率的高级技巧** - Pandas的`query`, `loc`和`groupby`用于复杂筛选和分组聚合,例如筛选2023年销售额超1000的记录并按类别计总销售额。 - NumPy的广播和向量化运算加速大规模数据处理,如快速计算两个大数组的元素级乘积。 - Pandas DataFrame基于NumPy,二者协同加速数据处理,如将DataFrame列转换为NumPy数组进行标准化再回写,避免链式赋值。 掌握这些高级操作,实现数据科学项目的效率飞跃。
65 0
|
SQL 数据可视化 数据挖掘
Python 数据分析(四):Pandas 进阶
Python 数据分析(四):Pandas 进阶
90 0
Python 数据分析(四):Pandas 进阶
|
7月前
|
Python
Pandas进阶--map映射,分组聚合和透视pivot_table详解
Pandas进阶--map映射,分组聚合和透视pivot_table详解
148 0
|
7月前
|
机器学习/深度学习 数据可视化 数据处理
Pandas进阶学习:探索更多高级特性与技巧
【4月更文挑战第16天】本文深入探讨Pandas的进阶特性,包括向量化操作、apply方法、数据重塑、布尔索引、多重索引、性能优化和库集成。通过学习,可以提升数据处理效率,如使用布尔条件筛选、CategoricalDtype优化性能、分块处理大数据及与NumPy、Matplotlib、Seaborn和scikit-learn集成。掌握这些技巧能助你更好地挖掘数据价值。
|
数据挖掘 数据处理 Python
Pandas进阶:处理缺失数据和数据聚合
在本篇文章中,我们将深入探讨Pandas库中两个重要的数据处理功能:处理缺失数据和数据聚合。
|
数据挖掘 Java 索引
数据分析三剑客【AIoT阶段一(下)】(十万字博文 保姆级讲解)—Pandas—pandas进阶(十七)
你好,感谢你能点进来本篇博客,请不要着急退出,相信我,如果你有一定的 Python 基础,想要学习 Python数据分析的三大库:numpy,pandas,matplotlib;这篇文章不会让你失望,本篇博客是 【AIoT阶段一(下)】 的内容:Python数据分析,
295 0
数据分析三剑客【AIoT阶段一(下)】(十万字博文 保姆级讲解)—Pandas—pandas进阶(十七)
|
存储 SQL 数据挖掘
【python进阶系列之pandas】数据处理的大佬 pandas之数据结构
这里是三岁,速学了pandas,怕自己不会用整理了一下资料,有问题的地方或者不对的希望大家多多指出,批评指正!!! 由于pandas的内容过多我们就把经常使用的进行解析,其他的我们后续逐步添加
345 0
|
数据挖掘 索引 Python
数据分析三剑客【AIoT阶段一(下)】(十万字博文 保姆级讲解)—Pandas—pandas进阶(十三)
你好,感谢你能点进来本篇博客,请不要着急退出,相信我,如果你有一定的 Python 基础,想要学习 Python数据分析的三大库:numpy,pandas,matplotlib;这篇文章不会让你失望,本篇博客是 【AIoT阶段一(下)】 的内容:Python数据分析,
138 0
数据分析三剑客【AIoT阶段一(下)】(十万字博文 保姆级讲解)—Pandas—pandas进阶(十三)
|
数据挖掘 索引 Python
数据分析三剑客【AIoT阶段一(下)】(十万字博文 保姆级讲解)—Pandas—pandas进阶(十四)
你好,感谢你能点进来本篇博客,请不要着急退出,相信我,如果你有一定的 Python 基础,想要学习 Python数据分析的三大库:numpy,pandas,matplotlib;这篇文章不会让你失望,本篇博客是 【AIoT阶段一(下)】 的内容:Python数据分析,
150 0
数据分析三剑客【AIoT阶段一(下)】(十万字博文 保姆级讲解)—Pandas—pandas进阶(十四)