只放了部分出来
前言¶
- python理念:Simple is better than complex,不浪费学习者的宝贵时间。
- 官方文档需要掌握了语言高阶抽象能力才能看懂,践习最好的方式是直接看例子。
- 官方文档很细致,但是内容太多,适合当字典查。
- 内容主要包含数据获取 、输出、查询、索引、格式转换、增加新列、时间处理、去重复去空值、排序、透视重组、曲线图、散点图
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]:
In [3]:
df = df.head(4)
数据切片¶
In [4]:
df.loc[1]
Out[4]:
In [5]:
type(df.loc[2])
Out[5]:
In [6]:
df.loc[[1, 2]]
Out[6]:
In [7]:
df.T
Out[7]:
In [8]:
df.T.loc['code']
Out[8]:
In [9]:
df['code']
Out[9]:
In [10]:
df.loc[1]['code']
Out[10]:
In [11]:
df.loc[:2,['code', 'name']]
Out[11]:
In [12]:
df.drop(1)
Out[12]:
In [13]:
df
Out[13]:
In [14]:
copy_df = df.copy()
copy_df = copy_df.drop(1)
copy_df
Out[14]:
In [15]:
copy_df.drop
Out[15]:
In [16]:
del copy_df['name']
copy_df
Out[16]:
In [17]:
df['p_change'] = None
df
Out[17]:
In [18]:
costs = df['price']
costs
Out[18]:
In [19]:
costs+=2
costs
Out[19]:
In [20]:
df
Out[20]:
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]:
In [23]:
df.columns
Out[23]:
复杂查询¶
In [27]:
df['price'] > 5
Out[27]:
In [28]:
only_Survived = df.where(df['price'] > 5)
only_Survived.head()
Out[28]:
In [29]:
only_Survived['price'].count()
Out[29]:
In [30]:
df['price'].count()
Out[30]:
In [31]:
only_Survived = only_Survived.dropna()
only_Survived.head()
Out[31]:
In [33]:
only_Survived = df[df['price'] > 6.5]
only_Survived.head()
Out[33]:
In [38]:
df[(df['price'] > 5) & (df['price'] <7)]
Out[38]:
In [42]:
df[(df['price'] < 5) | (df['price'] >6.7)]
Out[42]:
索引¶
In [46]:
df = pd.read_csv('/tmp/tmp.csv')
df.head()
Out[46]:
In [47]:
df = df.set_index('code')
df.head()
Out[47]:
In [48]:
df = df.reset_index()
df.head()
Out[48]:
In [49]:
df['price'].unique()
Out[49]:
缺失值处理¶
In [51]:
df = df.set_index('price')
df = df.sort_index()
df
Out[51]:
In [52]:
df = df.reset_index()
df = df.set_index(['code', 'name'])
df
Out[52]:
In [53]:
df = df.fillna(method='ffill')
df.head()
Out[53]:
合并Dataframes¶
pandas提供了各种工具,可以轻松地将Series,DataFrame和Panel对象与各种类型的索引设置逻辑组合在一起,并在连接/合并类型操作的情况下使用关系代数功能。
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]:
时间日期处理¶
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]:
In [83]:
type(t1.index)
Out[83]:
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]:
In [57]:
pd.to_datetime('4.7.12', dayfirst=True)
Out[57]:
In [58]:
pd.Timestamp('9/3/2016')-pd.Timestamp('9/1/2016')
Out[58]:
Timedeltas¶
In [59]:
pd.Timestamp('9/3/2016')-pd.Timestamp('9/1/2016')
Out[59]:
In [60]:
pd.Timestamp('9/2/2016 8:10AM') + pd.Timedelta('12D 3H')
Out[60]:
respmple¶
其余暂未发表出来