1. PYthon遍历语句求指导,如何通过python下载某时期所有股票日线信息然后存文件
你可以去官网看看怎么去做,
2. Pandas - 数据透视表
在正式介绍数据透视表 Pivot Table 之前,我们不妨通过一个列子,来感受一下 Pivot Table 的魅力。
首先从 excel 读取一份数据集:数据集统计了2020年1月-6月公司各部门制定的业绩目标以及实际完成业绩。
使用 Pandas 读取上述数据集:
下面,我们新增一列,计算完成度:
接下来,假设我们需要统计各时间段下每个部门的业绩完成度。这里,就需要用到我们的数据透视表 pivot table 了~
df.pivot_table 的计算结果,就是以时间作为索引,以部门作为列,填充的值则是完成度的平均值。
至此,数据透视表的概念也就清晰了~
上述汇总的数据还是有点多,可以使用 df.resample('M') 对日期时间索引按照 “月” 来进行重采样:
通常,在 Excel 中对于数据透视表的汇总结果,我们也会绘制相应的数据透视图来直观地反映数据。在 Pandas 中也是可以轻松绘图的:
此外,还可以对数据透视表做进一步的统计。比如计算各部门上半年的平均完成度:
上半年每个月份公司整体的完成度:
读取数据集:
不同性别的乘客在不同船舱等级支付的船票费用平均值:
汇总统计结果:
aggfunc 指除了对汇总之后的结果进行统计的方法,默认即 mean 求平均。可以指定其他统计方法,比如获取不同性别的乘客在不同船舱等级支付船票花费的最大值:
汇总统计结果:
指定 aggfunc='count' 可以实现对不同性别乘客在不同船舱等级的分布:
汇总统计结果:
进行计数时,也可以使用专用的方法 pd.crosstab :
对于不同船舱等级来说,男性和女性的获救概率:
汇总统计结果:
分别统计未成年/成年人中男性和女性获救的概率:
汇总统计结果:
3. Pandas数据探索分析,分享两个神器
在使用 pandas 进行数据分析时,进行一定的数据 探索 性分析(EDA)是必不可少的一个步骤,例如常见统计指标计算、缺失值、重复值统计等。
使用 df.describe 等函数进行 探索 当然是常见操作,但若要进行更完整、详细的分析缺则略显不足。
本文就将分享两个用于数据 探索 的 pandas 插件。
首先要介绍的是 pandas_profiling ,它扩展了 pandas DataFrame 的功能,这也是在之前多篇文章中提到的插件。
只需使用 pip install pandas_profiling 即可安装,在导入数据之后使用 df.profile_report 一行命令即可快速生成描述性分析报告
可以看到,除了之前我们需要的一些描述性统计数据,该报告还包含以下信息:
进一步我们还以将该报告保存为 html 格式,方便后续的查看,感兴趣的读者可以自行尝试。
第二个值得一用的是 sweetviz ,同样是一个开源 Python 库,可生成美观、高密度的可视化,只需两行代码即可启动 EDA 。
该插件围绕快速可视化目标值和比较数据集而构建。它的目标是帮助快速分析目标特征、训练与测试数据以及其他此类数据特征任务。
安装方法同上,执行 pip install sweetviz 即可。使用方法也是类似,导入数据后只需两行代码即可输出分析报告
和 pandas_profiling 不一样的是,现在我们只能得到一个 html 文件,打开即可看到相关 EDA 报告
可以看到,自动生成的报告主要有以下几个部分
从上面的介绍我们也能看出,两个 EDA 的插件侧重点有所不同,我们在实际使用时也应该根据数据特征与分析目标灵活使用!
4. pandas数据分析-常用命令
order = ['id','msg','reason']
df = df[order]
常用:
df.rename(columns={'A':'a','B':'b'},inplace=True)(inplace说明修改原数据)
高级用法示例:大写转成小写,去除头尾空格(strip)用 替换空格
df.rename(columns=lambda x:x.strip().lower().replace(' '," "),inplace=True)
检查冗余值 df.plicated()
删除冗余值 df.drop_plicates(inplace=True)
df.reset_index()
test=pd.DataFrame(msg)
lambda x: 1 if x>0 else 0
df = pd.concat([df,msg],axis=0,ignore_index=True)
pd.merge(df1,df2) 相当于sql, join的左连接
str[0:4] #截取第一位和第四位的字符
str[:-1] #截取从开头到倒数第一位的字符
for i,val in range(len(temp)):
for i,val in enumerate(temp):
df[df.isnull().values==True].drop_plicates()
append()向列表尾部追加一个元素,只占一个索引位
extend()像列表尾部追加一个李彪,将列表2中 的每个元素都追加进列表1 .
str=','.join(str(i)for i in list)
eval(str)
df1 = df2.groupby(['ip']).aggregate(lambda x:set(x))
for i in data:
def timeStamp(timeNum):
timeStamp = float(timeNum/1000)
timeArray = time.localtime(timeStamp)
otherStyleTime = time.strftime("%Y.%m.%d", timeArray)
return otherStyleTime
df= df.astype('str')
import json
with open('psth','r') as load_f:
load_dict = json.load(load_f)
ioc_list=[]
for k,v in load_dict.items():
5. 怎样用python提取不同股票csv里特定时间段的数据
用pandas库,
import pandas as pd
data = pd.read_csv('train.csv')
train_data = data.values[0:TRAIN_NUM,1:]
train_label = data.values[0:TRAIN_NUM,0]
study.163.com/course/courseMain.htm?courseId=1000035
机器学习正好讲了这个手写识别的例子!
6. 解决 pandas_datareader 无法获取雅虎财经数据的问题
pandas_datareader 是重要的 pandas 相关包,原来是 pandas.io.data 方法,用于获取接口数据,比如雅虎财经上的数据或者美联储路易斯安娜分行的数据,但是在最近版本(比如 pandas 0.20)中 pandas.io.data 的方法独立出来称为一个新的包 pandas_datareader 。
雅虎财经和谷歌财经的接口变换频繁。如果用 pip install pandas_datareader ,已经无法得到雅虎财经。
pandas_datareader github Issuse #315 针对的就是雅虎财经接口无法访问的问题, gusutabopb 在 5月21日进行了成功修正,并提供了他修正后的 pandas_datareader 新版本。
该修正版本的安装方法是
安装以后测试获取 google 的股票数据成功。
参考:
Issues with the data reader fetching yahoo finance #315
Error with pulling data from Yahoo Finance
7. 为什么pandas有国内股票数据
都是公开发行上市的股票,当然会有的,Pandas是数据分析工具包
TuShare是国内股票数据抓取工具,除了股票的实时和历史数据,还有基本面数据,加上自然语言处理(比如情绪分析),或者机器学习,就比较有趣了。
8. pandas数据整理
一、drop()方法
1、df.drop()删除一行或一列
print(df.isnull().sum()) #查看空值汇总
df.drop(labels=None,index=None,columns=None) #labels参数指定要删除的行或列的名字,index参数指定要删除的行,columns参数指定要删除的列,用列表给定。
df.drop(labels=[0,2],axis=0) #删除1-2行。
df.drop(labels=[0,2],axis=1) #删除1-2列。
df.drop(['列标签'],axis=1)#删除指定列标签的列,如果是单列可以直接用列名。
df.drop(['航标签'])#删除指定行标签的行,如果是单行可以直接用行名。
2、axis参数值有两个,0表示删除行,为默认值;1表示删除列。
3、inplace参数值有两个,False表示返回一个新值,不修改原数据,为默认值;Ture表示在原来的数据基础上修改,除非确认要修改原数据,要慎用。
4、删除指定条件的行
(1)按行遍历指定符合条件的行索引
index_list=[]
for index, row_data in df.interrows():
if row_data['列标签']==‘指定条件’:
index_list.append(index)
(2)删除指定行
df1=df.drop(index_list,axis=0)
df1
(3)或者用列表表达式
index_list=[index for index, row_data in df.interrows() if row_data['列标签']==‘指定条件’]
df1=df.drop(index_list,axis=0)
df1
二、空值处理dropna()
1、删除整行或列
df1=df.dropna(axis=0)或df.dropna() #删除含有NAN的行,不添加axis参数默认删除行。
df2=df.dropna(axis=1) #删除含有NAN的列。
2、对空值进行填充
(1)使用常数填充
df3=df.fillna(0)
(2)用列的平均值填充
df4=df.fillna(df.mean())
(3)用列的前一个数值填充
df5=df.fillna(method=ffill,axis=1)
(4)用行的前一个数值填充
df5=df.fillna(method=ffill,axis=0)
三、移除重复数据
1、参数说明
df.drop_plicates()方法的subset参数为所有列(默认),后指定列;keep参数为first(默认)、last和False;inplace参数为False(默认)和Ture。
df6=df.plicated()#返回值为Ture和False
2、删除所有列都相同的行
df7=df.drop_plicates() #删除所有列都相同的行,最常用的方式。
df.reset_index(drop=True) #重建索引
3、删除指定列值相同的行
df7=df.drop_plicates(subset=['列名'],keep='first',inplace=False)#列名表示的是对比的列
df.reset_index(drop=True) #重建索引
四、计算两列值得到一新列值
1、使用列标签筛选,直接计算
df['新列标签']=df['第一列标签']*df['第一列标签']
2、使用位置索引遍历,每对值单独计算
for i in range(len(df['第一列标签'])):
df['新列标签'].iloc[i]=df['第一列标签'].iloc[i]*df['第一列标签'].iloc[i]
9. pandas分组统计怎么加数据
pandas分组统计加数据方法:
1、分组使用聚合函数做数据统计。
2、遍历groupby的结果理解执行流程。pandas分组是一个常用的功能,如分别统计每个月的股票波动率、每个部门的人数、每个季度的利润等等。
10. 数据分析—Pandas删除数据的几种情况
开始之前,pandas中DataFrame删除对象可能存在几种情况
本文就针对这四种情况探讨一下如何操作。
模拟了一份股票交割的记录。
也可以根据行号删除记录,比如删除第三行
注意,这个办法其实不是按照行号删除,而是按照索引删除。如果index为3,则会将前4条记录都删除。这个方法支持一个范围,以及用负数表示从末尾删除。
本例其实是筛选,如果需要保留,可以将筛选后的对象赋值给自己即可。
如果想取包含某些字符的记录,可以去掉~
完成~
希望本文的内容对大家的学习或者工作能带来一定的帮助,每天进步一点点,加油。