只放了部分出来

前言

  • python理念:Simple is better than complex,不浪费学习者的宝贵时间。
  • 官方文档需要掌握了语言高阶抽象能力才能看懂,践习最好的方式是直接看例子。
  • 官方文档很细致,但是内容太多,适合当字典查。
  • 内容主要包含数据获取 、输出、查询、索引、格式转换、增加新列、时间处理、去重复去空值、排序、透视重组、曲线图、散点图

API获取测试数据

这里为方便,我们使用tushare库来获取数据来供练习使用,想要先安装tushare

pip install tushare

DataFrame数据结构

 您将通过学习如何组织,重塑和聚合多个数据集来回答您的具体问题,从而磨练您的pandas技能。  pandas: 具有标记轴(行和列)的二维大小可变,可能异构的表格数据结构。算术运算在行标签和列标签上对齐。可以被认为是Series对象的类似dict的容器。主要的pandas数据结构。

pandas有很多任务,包括:

读/写许多不同的数据格式 选择数据子集 跨行和向下列计算 查找并填充缺失的数据 将操作应用于数据中的独立组 将数据重塑为不同的形式 将多个数据集组合在一起 高级时间序列功能 通过matplotlib和seaborn可视化 尽管pandas非常强大,但它并不能为整个数据科学管道提供功能。 Pandas通常是用于在数据捕获和存储以及数据建模和预测之间压缩的数据探索和清理的中间工具。

In [1]:
import pandas as pd
import numpy as np
import tushare as ts

获取数据,使用head查看同步的数据

In [2]:
df = ts.get_day_all()
df.head()
Out[2]:
code name p_change price change open high low preprice pe ... floats fvalues abvalues avgprice strength activity avgturnover attack interval3 interval6
0 002305 南国置业 10.20 2.70 0.25 2.54 2.70 2.48 2.45 118.19 ... 16.23 43.83 46.82 2.64 12.64 1128.0 0.0011 8.87 4.25 -26.43
1 002181 粤 传 媒 10.10 4.47 0.41 4.10 4.47 3.99 4.06 143.59 ... 11.34 50.71 51.90 4.32 12.54 3179.0 0.0017 12.03 23.48 -8.59
2 002703 浙江世宝 10.09 4.69 0.43 4.28 4.69 4.27 4.26 0.00 ... 5.53 25.94 26.87 4.61 12.53 2091.0 0.0027 9.84 4.22 -18.43
3 002502 骅威文化 10.05 4.71 0.43 4.32 4.71 4.32 4.28 90.84 ... 6.21 29.27 40.50 4.60 12.49 1610.0 0.0034 9.03 -18.37 -18.37
4 002098 浔兴股份 10.04 7.67 0.70 7.07 7.67 7.07 6.97 43.38 ... 3.10 23.78 27.46 7.46 12.48 3510.0 0.0036 8.49 -52.97 -52.97

5 rows × 30 columns

In [3]:
df = df.head(4)

数据切片

In [4]:
df.loc[1]
Out[4]:
code               002181
name                粤 传 媒
p_change             10.1
price                4.47
change               0.41
open                  4.1
high                 4.47
low                  3.99
preprice             4.06
pe                 143.59
volratio             2.18
turnover             5.29
range               11.82
volume             600263
selling            242759
buying             357503
amount         2.5942e+08
totals              11.61
industry              出版业
area                   广东
floats              11.34
fvalues             50.71
abvalues             51.9
avgprice             4.32
strength            12.54
activity             3179
avgturnover        0.0017
attack              12.03
interval3           23.48
interval6           -8.59
Name: 1, dtype: object
In [5]:
type(df.loc[2])
Out[5]:
pandas.core.series.Series
In [6]:
df.loc[[1, 2]]
Out[6]:
code name p_change price change open high low preprice pe ... floats fvalues abvalues avgprice strength activity avgturnover attack interval3 interval6
1 002181 粤 传 媒 10.10 4.47 0.41 4.10 4.47 3.99 4.06 143.59 ... 11.34 50.71 51.90 4.32 12.54 3179.0 0.0017 12.03 23.48 -8.59
2 002703 浙江世宝 10.09 4.69 0.43 4.28 4.69 4.27 4.26 0.00 ... 5.53 25.94 26.87 4.61 12.53 2091.0 0.0027 9.84 4.22 -18.43

2 rows × 30 columns

In [7]:
df.T
Out[7]:
0 1 2 3
code 002305 002181 002703 002502
name 南国置业 粤 传 媒 浙江世宝 骅威文化
p_change 10.2 10.1 10.09 10.05
price 2.7 4.47 4.69 4.71
change 0.25 0.41 0.43 0.43
open 2.54 4.1 4.28 4.32
high 2.7 4.47 4.69 4.71
low 2.48 3.99 4.27 4.32
preprice 2.45 4.06 4.26 4.28
pe 118.19 143.59 0 90.84
volratio 2.48 2.18 2.31 0.85
turnover 1.24 5.29 5.56 5.49
range 8.98 11.82 9.86 9.11
volume 201709 600263 307232 341329
selling 133382 242759 196713 246157
buying 68326 357503 110518 95171
amount 5.33408e+07 2.5942e+08 1.41513e+08 1.57103e+08
totals 17.34 11.61 7.9 8.6
industry 区域地产 出版业 汽车配件 影视音像
area 湖北 广东 浙江 广东
floats 16.23 11.34 5.53 6.21
fvalues 43.83 50.71 25.94 29.27
abvalues 46.82 51.9 26.87 40.5
avgprice 2.64 4.32 4.61 4.6
strength 12.64 12.54 12.53 12.49
activity 1128 3179 2091 1610
avgturnover 0.0011 0.0017 0.0027 0.0034
attack 8.87 12.03 9.84 9.03
interval3 4.25 23.48 4.22 -18.37
interval6 -26.43 -8.59 -18.43 -18.37
In [8]:
df.T.loc['code']
Out[8]:
0    002305
1    002181
2    002703
3    002502
Name: code, dtype: object
In [9]:
df['code']
Out[9]:
0    002305
1    002181
2    002703
3    002502
Name: code, dtype: object
In [10]:
df.loc[1]['code']
Out[10]:
'002181'
In [11]:
df.loc[:2,['code', 'name']]
Out[11]:
code name
0 002305 南国置业
1 002181 粤 传 媒
2 002703 浙江世宝
In [12]:
df.drop(1)
Out[12]:
code name p_change price change open high low preprice pe ... floats fvalues abvalues avgprice strength activity avgturnover attack interval3 interval6
0 002305 南国置业 10.20 2.70 0.25 2.54 2.70 2.48 2.45 118.19 ... 16.23 43.83 46.82 2.64 12.64 1128.0 0.0011 8.87 4.25 -26.43
2 002703 浙江世宝 10.09 4.69 0.43 4.28 4.69 4.27 4.26 0.00 ... 5.53 25.94 26.87 4.61 12.53 2091.0 0.0027 9.84 4.22 -18.43
3 002502 骅威文化 10.05 4.71 0.43 4.32 4.71 4.32 4.28 90.84 ... 6.21 29.27 40.50 4.60 12.49 1610.0 0.0034 9.03 -18.37 -18.37

3 rows × 30 columns

In [13]:
df
Out[13]:
code name p_change price change open high low preprice pe ... floats fvalues abvalues avgprice strength activity avgturnover attack interval3 interval6
0 002305 南国置业 10.20 2.70 0.25 2.54 2.70 2.48 2.45 118.19 ... 16.23 43.83 46.82 2.64 12.64 1128.0 0.0011 8.87 4.25 -26.43
1 002181 粤 传 媒 10.10 4.47 0.41 4.10 4.47 3.99 4.06 143.59 ... 11.34 50.71 51.90 4.32 12.54 3179.0 0.0017 12.03 23.48 -8.59
2 002703 浙江世宝 10.09 4.69 0.43 4.28 4.69 4.27 4.26 0.00 ... 5.53 25.94 26.87 4.61 12.53 2091.0 0.0027 9.84 4.22 -18.43
3 002502 骅威文化 10.05 4.71 0.43 4.32 4.71 4.32 4.28 90.84 ... 6.21 29.27 40.50 4.60 12.49 1610.0 0.0034 9.03 -18.37 -18.37

4 rows × 30 columns

In [14]:
copy_df = df.copy()
copy_df = copy_df.drop(1)
copy_df
Out[14]:
code name p_change price change open high low preprice pe ... floats fvalues abvalues avgprice strength activity avgturnover attack interval3 interval6
0 002305 南国置业 10.20 2.70 0.25 2.54 2.70 2.48 2.45 118.19 ... 16.23 43.83 46.82 2.64 12.64 1128.0 0.0011 8.87 4.25 -26.43
2 002703 浙江世宝 10.09 4.69 0.43 4.28 4.69 4.27 4.26 0.00 ... 5.53 25.94 26.87 4.61 12.53 2091.0 0.0027 9.84 4.22 -18.43
3 002502 骅威文化 10.05 4.71 0.43 4.32 4.71 4.32 4.28 90.84 ... 6.21 29.27 40.50 4.60 12.49 1610.0 0.0034 9.03 -18.37 -18.37

3 rows × 30 columns

In [15]:
copy_df.drop
Out[15]:
<bound method DataFrame.drop of      code  name  p_change  price  change  open  high   low  preprice      pe  \
0  002305  南国置业     10.20   2.70    0.25  2.54  2.70  2.48      2.45  118.19   
2  002703  浙江世宝     10.09   4.69    0.43  4.28  4.69  4.27      4.26    0.00   
3  002502  骅威文化     10.05   4.71    0.43  4.32  4.71  4.32      4.28   90.84   

     ...     floats  fvalues  abvalues  avgprice  strength  activity  \
0    ...      16.23    43.83     46.82      2.64     12.64    1128.0   
2    ...       5.53    25.94     26.87      4.61     12.53    2091.0   
3    ...       6.21    29.27     40.50      4.60     12.49    1610.0   

   avgturnover  attack interval3 interval6  
0       0.0011    8.87      4.25    -26.43  
2       0.0027    9.84      4.22    -18.43  
3       0.0034    9.03    -18.37    -18.37  

[3 rows x 30 columns]>
In [16]:
del copy_df['name']
copy_df
Out[16]:
code p_change price change open high low preprice pe volratio ... floats fvalues abvalues avgprice strength activity avgturnover attack interval3 interval6
0 002305 10.20 2.70 0.25 2.54 2.70 2.48 2.45 118.19 2.48 ... 16.23 43.83 46.82 2.64 12.64 1128.0 0.0011 8.87 4.25 -26.43
2 002703 10.09 4.69 0.43 4.28 4.69 4.27 4.26 0.00 2.31 ... 5.53 25.94 26.87 4.61 12.53 2091.0 0.0027 9.84 4.22 -18.43
3 002502 10.05 4.71 0.43 4.32 4.71 4.32 4.28 90.84 0.85 ... 6.21 29.27 40.50 4.60 12.49 1610.0 0.0034 9.03 -18.37 -18.37

3 rows × 29 columns

In [17]:
df['p_change'] = None
df
Out[17]:
code name p_change price change open high low preprice pe ... floats fvalues abvalues avgprice strength activity avgturnover attack interval3 interval6
0 002305 南国置业 None 2.70 0.25 2.54 2.70 2.48 2.45 118.19 ... 16.23 43.83 46.82 2.64 12.64 1128.0 0.0011 8.87 4.25 -26.43
1 002181 粤 传 媒 None 4.47 0.41 4.10 4.47 3.99 4.06 143.59 ... 11.34 50.71 51.90 4.32 12.54 3179.0 0.0017 12.03 23.48 -8.59
2 002703 浙江世宝 None 4.69 0.43 4.28 4.69 4.27 4.26 0.00 ... 5.53 25.94 26.87 4.61 12.53 2091.0 0.0027 9.84 4.22 -18.43
3 002502 骅威文化 None 4.71 0.43 4.32 4.71 4.32 4.28 90.84 ... 6.21 29.27 40.50 4.60 12.49 1610.0 0.0034 9.03 -18.37 -18.37

4 rows × 30 columns

In [18]:
costs = df['price']
costs
Out[18]:
0    2.70
1    4.47
2    4.69
3    4.71
Name: price, dtype: float64
In [19]:
costs+=2
costs
Out[19]:
0    4.70
1    6.47
2    6.69
3    6.71
Name: price, dtype: float64
In [20]:
df
Out[20]:
code name p_change price change open high low preprice pe ... floats fvalues abvalues avgprice strength activity avgturnover attack interval3 interval6
0 002305 南国置业 None 4.70 0.25 2.54 2.70 2.48 2.45 118.19 ... 16.23 43.83 46.82 2.64 12.64 1128.0 0.0011 8.87 4.25 -26.43
1 002181 粤 传 媒 None 6.47 0.41 4.10 4.47 3.99 4.06 143.59 ... 11.34 50.71 51.90 4.32 12.54 3179.0 0.0017 12.03 23.48 -8.59
2 002703 浙江世宝 None 6.69 0.43 4.28 4.69 4.27 4.26 0.00 ... 5.53 25.94 26.87 4.61 12.53 2091.0 0.0027 9.84 4.22 -18.43
3 002502 骅威文化 None 6.71 0.43 4.32 4.71 4.32 4.28 90.84 ... 6.21 29.27 40.50 4.60 12.49 1610.0 0.0034 9.03 -18.37 -18.37

4 rows × 30 columns

Dataframe索引

作为数据科学家,您经常会发现您需要的数据不在一个文件中。它可能分布在许多文本文件,电子表格或数据库中。您希望能够将感兴趣的数据导入为DataFrame集合,并找出如何将它们组合起来以回答您的核心问题。

输出文件和读取文件

保存成csv

In [21]:
df.to_csv('/tmp/tmp.csv')

从csv读取数据

In [22]:
df = pd.read_csv('/tmp/tmp.csv')
df.head()
Out[22]:
Unnamed: 0 code name p_change price change open high low preprice ... floats fvalues abvalues avgprice strength activity avgturnover attack interval3 interval6
0 0 2305 南国置业 NaN 4.70 0.25 2.54 2.70 2.48 2.45 ... 16.23 43.83 46.82 2.64 12.64 1128.0 0.0011 8.87 4.25 -26.43
1 1 2181 粤 传 媒 NaN 6.47 0.41 4.10 4.47 3.99 4.06 ... 11.34 50.71 51.90 4.32 12.54 3179.0 0.0017 12.03 23.48 -8.59
2 2 2703 浙江世宝 NaN 6.69 0.43 4.28 4.69 4.27 4.26 ... 5.53 25.94 26.87 4.61 12.53 2091.0 0.0027 9.84 4.22 -18.43
3 3 2502 骅威文化 NaN 6.71 0.43 4.32 4.71 4.32 4.28 ... 6.21 29.27 40.50 4.60 12.49 1610.0 0.0034 9.03 -18.37 -18.37

4 rows × 31 columns

In [23]:
df.columns
Out[23]:
Index(['Unnamed: 0', 'code', 'name', 'p_change', 'price', 'change', 'open',
       'high', 'low', 'preprice', 'pe', 'volratio', 'turnover', 'range',
       'volume', 'selling', 'buying', 'amount', 'totals', 'industry', 'area',
       'floats', 'fvalues', 'abvalues', 'avgprice', 'strength', 'activity',
       'avgturnover', 'attack', 'interval3', 'interval6'],
      dtype='object')

复杂查询

In [27]:
df['price'] > 5
Out[27]:
0    False
1     True
2     True
3     True
Name: price, dtype: bool
In [28]:
only_Survived = df.where(df['price'] > 5)
only_Survived.head()
Out[28]:
Unnamed: 0 code name p_change price change open high low preprice ... floats fvalues abvalues avgprice strength activity avgturnover attack interval3 interval6
0 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
1 1.0 2181.0 粤 传 媒 NaN 6.47 0.41 4.10 4.47 3.99 4.06 ... 11.34 50.71 51.90 4.32 12.54 3179.0 0.0017 12.03 23.48 -8.59
2 2.0 2703.0 浙江世宝 NaN 6.69 0.43 4.28 4.69 4.27 4.26 ... 5.53 25.94 26.87 4.61 12.53 2091.0 0.0027 9.84 4.22 -18.43
3 3.0 2502.0 骅威文化 NaN 6.71 0.43 4.32 4.71 4.32 4.28 ... 6.21 29.27 40.50 4.60 12.49 1610.0 0.0034 9.03 -18.37 -18.37

4 rows × 31 columns

In [29]:
only_Survived['price'].count()
Out[29]:
3
In [30]:
df['price'].count()
Out[30]:
4
In [31]:
only_Survived = only_Survived.dropna()
only_Survived.head()
Out[31]:
Unnamed: 0 code name p_change price change open high low preprice ... floats fvalues abvalues avgprice strength activity avgturnover attack interval3 interval6

0 rows × 31 columns

In [33]:
only_Survived = df[df['price'] > 6.5]
only_Survived.head()
Out[33]:
Unnamed: 0 code name p_change price change open high low preprice ... floats fvalues abvalues avgprice strength activity avgturnover attack interval3 interval6
2 2 2703 浙江世宝 NaN 6.69 0.43 4.28 4.69 4.27 4.26 ... 5.53 25.94 26.87 4.61 12.53 2091.0 0.0027 9.84 4.22 -18.43
3 3 2502 骅威文化 NaN 6.71 0.43 4.32 4.71 4.32 4.28 ... 6.21 29.27 40.50 4.60 12.49 1610.0 0.0034 9.03 -18.37 -18.37

2 rows × 31 columns

In [38]:
df[(df['price'] > 5) & (df['price'] <7)]
Out[38]:
Unnamed: 0 code name p_change price change open high low preprice ... floats fvalues abvalues avgprice strength activity avgturnover attack interval3 interval6
1 1 2181 粤 传 媒 NaN 6.47 0.41 4.10 4.47 3.99 4.06 ... 11.34 50.71 51.90 4.32 12.54 3179.0 0.0017 12.03 23.48 -8.59
2 2 2703 浙江世宝 NaN 6.69 0.43 4.28 4.69 4.27 4.26 ... 5.53 25.94 26.87 4.61 12.53 2091.0 0.0027 9.84 4.22 -18.43
3 3 2502 骅威文化 NaN 6.71 0.43 4.32 4.71 4.32 4.28 ... 6.21 29.27 40.50 4.60 12.49 1610.0 0.0034 9.03 -18.37 -18.37

3 rows × 31 columns

In [42]:
df[(df['price'] < 5) | (df['price'] >6.7)]
Out[42]:
Unnamed: 0 code name p_change price change open high low preprice ... floats fvalues abvalues avgprice strength activity avgturnover attack interval3 interval6
0 0 2305 南国置业 NaN 4.70 0.25 2.54 2.70 2.48 2.45 ... 16.23 43.83 46.82 2.64 12.64 1128.0 0.0011 8.87 4.25 -26.43
3 3 2502 骅威文化 NaN 6.71 0.43 4.32 4.71 4.32 4.28 ... 6.21 29.27 40.50 4.60 12.49 1610.0 0.0034 9.03 -18.37 -18.37

2 rows × 31 columns

索引

In [46]:
df = pd.read_csv('/tmp/tmp.csv')
df.head()
Out[46]:
Unnamed: 0 code name p_change price change open high low preprice ... floats fvalues abvalues avgprice strength activity avgturnover attack interval3 interval6
0 0 2305 南国置业 NaN 4.70 0.25 2.54 2.70 2.48 2.45 ... 16.23 43.83 46.82 2.64 12.64 1128.0 0.0011 8.87 4.25 -26.43
1 1 2181 粤 传 媒 NaN 6.47 0.41 4.10 4.47 3.99 4.06 ... 11.34 50.71 51.90 4.32 12.54 3179.0 0.0017 12.03 23.48 -8.59
2 2 2703 浙江世宝 NaN 6.69 0.43 4.28 4.69 4.27 4.26 ... 5.53 25.94 26.87 4.61 12.53 2091.0 0.0027 9.84 4.22 -18.43
3 3 2502 骅威文化 NaN 6.71 0.43 4.32 4.71 4.32 4.28 ... 6.21 29.27 40.50 4.60 12.49 1610.0 0.0034 9.03 -18.37 -18.37

4 rows × 31 columns

In [47]:
df = df.set_index('code')
df.head()
Out[47]:
Unnamed: 0 name p_change price change open high low preprice pe ... floats fvalues abvalues avgprice strength activity avgturnover attack interval3 interval6
code
2305 0 南国置业 NaN 4.70 0.25 2.54 2.70 2.48 2.45 118.19 ... 16.23 43.83 46.82 2.64 12.64 1128.0 0.0011 8.87 4.25 -26.43
2181 1 粤 传 媒 NaN 6.47 0.41 4.10 4.47 3.99 4.06 143.59 ... 11.34 50.71 51.90 4.32 12.54 3179.0 0.0017 12.03 23.48 -8.59
2703 2 浙江世宝 NaN 6.69 0.43 4.28 4.69 4.27 4.26 0.00 ... 5.53 25.94 26.87 4.61 12.53 2091.0 0.0027 9.84 4.22 -18.43
2502 3 骅威文化 NaN 6.71 0.43 4.32 4.71 4.32 4.28 90.84 ... 6.21 29.27 40.50 4.60 12.49 1610.0 0.0034 9.03 -18.37 -18.37

4 rows × 30 columns

In [48]:
df = df.reset_index()
df.head()
Out[48]:
code Unnamed: 0 name p_change price change open high low preprice ... floats fvalues abvalues avgprice strength activity avgturnover attack interval3 interval6
0 2305 0 南国置业 NaN 4.70 0.25 2.54 2.70 2.48 2.45 ... 16.23 43.83 46.82 2.64 12.64 1128.0 0.0011 8.87 4.25 -26.43
1 2181 1 粤 传 媒 NaN 6.47 0.41 4.10 4.47 3.99 4.06 ... 11.34 50.71 51.90 4.32 12.54 3179.0 0.0017 12.03 23.48 -8.59
2 2703 2 浙江世宝 NaN 6.69 0.43 4.28 4.69 4.27 4.26 ... 5.53 25.94 26.87 4.61 12.53 2091.0 0.0027 9.84 4.22 -18.43
3 2502 3 骅威文化 NaN 6.71 0.43 4.32 4.71 4.32 4.28 ... 6.21 29.27 40.50 4.60 12.49 1610.0 0.0034 9.03 -18.37 -18.37

4 rows × 31 columns

In [49]:
df['price'].unique()
Out[49]:
array([4.7 , 6.47, 6.69, 6.71])

缺失值处理

In [51]:
df = df.set_index('price')
df = df.sort_index()
df
Out[51]:
code Unnamed: 0 name p_change change open high low preprice pe ... floats fvalues abvalues avgprice strength activity avgturnover attack interval3 interval6
price
4.70 2305 0 南国置业 NaN 0.25 2.54 2.70 2.48 2.45 118.19 ... 16.23 43.83 46.82 2.64 12.64 1128.0 0.0011 8.87 4.25 -26.43
6.47 2181 1 粤 传 媒 NaN 0.41 4.10 4.47 3.99 4.06 143.59 ... 11.34 50.71 51.90 4.32 12.54 3179.0 0.0017 12.03 23.48 -8.59
6.69 2703 2 浙江世宝 NaN 0.43 4.28 4.69 4.27 4.26 0.00 ... 5.53 25.94 26.87 4.61 12.53 2091.0 0.0027 9.84 4.22 -18.43
6.71 2502 3 骅威文化 NaN 0.43 4.32 4.71 4.32 4.28 90.84 ... 6.21 29.27 40.50 4.60 12.49 1610.0 0.0034 9.03 -18.37 -18.37

4 rows × 30 columns

In [52]:
df = df.reset_index()
df = df.set_index(['code', 'name'])
df
Out[52]:
price Unnamed: 0 p_change change open high low preprice pe volratio ... floats fvalues abvalues avgprice strength activity avgturnover attack interval3 interval6
code name
2305 南国置业 4.70 0 NaN 0.25 2.54 2.70 2.48 2.45 118.19 2.48 ... 16.23 43.83 46.82 2.64 12.64 1128.0 0.0011 8.87 4.25 -26.43
2181 粤 传 媒 6.47 1 NaN 0.41 4.10 4.47 3.99 4.06 143.59 2.18 ... 11.34 50.71 51.90 4.32 12.54 3179.0 0.0017 12.03 23.48 -8.59
2703 浙江世宝 6.69 2 NaN 0.43 4.28 4.69 4.27 4.26 0.00 2.31 ... 5.53 25.94 26.87 4.61 12.53 2091.0 0.0027 9.84 4.22 -18.43
2502 骅威文化 6.71 3 NaN 0.43 4.32 4.71 4.32 4.28 90.84 0.85 ... 6.21 29.27 40.50 4.60 12.49 1610.0 0.0034 9.03 -18.37 -18.37

4 rows × 29 columns

In [53]:
df = df.fillna(method='ffill')
df.head()
Out[53]:
price Unnamed: 0 p_change change open high low preprice pe volratio ... floats fvalues abvalues avgprice strength activity avgturnover attack interval3 interval6
code name
2305 南国置业 4.70 0 NaN 0.25 2.54 2.70 2.48 2.45 118.19 2.48 ... 16.23 43.83 46.82 2.64 12.64 1128.0 0.0011 8.87 4.25 -26.43
2181 粤 传 媒 6.47 1 NaN 0.41 4.10 4.47 3.99 4.06 143.59 2.18 ... 11.34 50.71 51.90 4.32 12.54 3179.0 0.0017 12.03 23.48 -8.59
2703 浙江世宝 6.69 2 NaN 0.43 4.28 4.69 4.27 4.26 0.00 2.31 ... 5.53 25.94 26.87 4.61 12.53 2091.0 0.0027 9.84 4.22 -18.43
2502 骅威文化 6.71 3 NaN 0.43 4.32 4.71 4.32 4.28 90.84 0.85 ... 6.21 29.27 40.50 4.60 12.49 1610.0 0.0034 9.03 -18.37 -18.37

4 rows × 29 columns

合并Dataframes

pandas提供了各种工具,可以轻松地将Series,DataFrame和Panel对象与各种类型的索引设置逻辑组合在一起,并在连接/合并类型操作的情况下使用关系代数功能。

合并和重组

需要先安装另外一个数据获取的库pytdx获取另外一个数据

pip install pytdx

In [54]:
from pytdx.hq import TdxHq_API
from pytdx.params import TDXParams
api = TdxHq_API(auto_retry=True,heartbeat=True)

with api.connect('119.147.212.81', 7709):
    block_df = api.to_df(api.get_and_parse_block_info(TDXParams.BLOCK_DEFAULT))
In [55]:
block_df.head()
Out[55]:
blockname block_type code_index code
0 沪深300 2 0 000001
1 沪深300 2 1 000002
2 沪深300 2 2 000060
3 沪深300 2 3 000063
4 沪深300 2 4 000069

时间日期处理

Datetime

In [82]:
t1 = pd.Series(list('abc'), [pd.Timestamp('2016-09-01'), pd.Timestamp('2016-09-02'), pd.Timestamp('2016-09-03')])
t1
Out[82]:
2016-09-01    a
2016-09-02    b
2016-09-03    c
dtype: object
In [83]:
type(t1.index)
Out[83]:
pandas.core.indexes.datetimes.DatetimeIndex

Converting to Datetime

In [56]:
d1 = ['2 June 2013', 'Aug 29, 2014', '2015-06-26', '7/12/16']
ts3 = pd.DataFrame(np.random.randint(10, 100, (4,2)), index=d1, columns=list('ab'))
ts3
Out[56]:
a b
2 June 2013 44 34
Aug 29, 2014 81 94
2015-06-26 60 13
7/12/16 85 56
In [57]:
pd.to_datetime('4.7.12', dayfirst=True)
Out[57]:
Timestamp('2012-07-04 00:00:00')
In [58]:
pd.Timestamp('9/3/2016')-pd.Timestamp('9/1/2016')
Out[58]:
Timedelta('2 days 00:00:00')

Timedeltas

In [59]:
pd.Timestamp('9/3/2016')-pd.Timestamp('9/1/2016')
Out[59]:
Timedelta('2 days 00:00:00')
In [60]:
pd.Timestamp('9/2/2016 8:10AM') + pd.Timedelta('12D 3H')
Out[60]:
Timestamp('2016-09-14 11:10:00')

respmple

其余暂未发表出来