python的学习之路===小白学编程(1)

当我follow一个同事介绍的博主的时候,发现了这个七年前注册过的博客账号。
当时好像在学习c#和mvc的一些东东。
但是回头看去,不止七年前,更早更早之前,就一直在尝试着学习编程,想掌握一个能够得心应手的工具。但由于需求并不迫切,加上自己性格使然,断断续续的捡起放下,浅尝辄止的尝试了好多,最终也没能深入下去。
这样也是浪费了很多时间和自己的心力,如果能从一开始选定一个目标,无论哪种语言,坚持下来,这么多年也应该有所积累了吧。
这次又是一个特殊的机缘巧合,有了再次学习编程的想法和动机,想把python作为学习目标。为了不让这次的学习再象以往一样半途而废,就开通博客作为自我监督和实践的记录的一个平台吧。
 
先回顾一下,做出学习python的决定有一段时间了。
大概从2018年3月6日开始决定学习python。当时选了《Learn Python the Hard Way(第三版)》作为学习教材。
然后学了4,5章之后发现这本书的模式不太适合我,引不起我的兴趣。所以学习进展不大,就停了下来。
后面在 http://www.runoob.com/ 菜鸟教程上看python,但是看下来感觉这种类型的教程对我来说也是很生涩,难于入门。
再后来在 https://docs.pythontab.com/上找到了《零基础学python》(第二版),粗读了一遍之后发现效果还是不好,很多东东记不住。
后面干脆就把第一章反复看了几遍,然后一点一点的做笔记记下来。后面生涩的类、面对对象这些看的云里雾里的干脆就照着教材敲下来。
目前看还是以这份教材为主。
 
最近发现挖地兔的tushar模块(tushare.pro)这个是一个很不错的数据平台和工具。 https://tushare.pro/register?reg=125796感兴趣的可以点击这个链接去注册一个账号。
稍微尝试了一下发现很好用,通过几个语句就可以获取到自己想要的数据很是方便,于是决定干脆以写一个股票工具为目标进行实操,这样学以致用不会太枯燥。
嗯记录一下时间点2018年11月7日。
再介绍一下知识背景:
比较熟悉数据库 sqlserver、oracle,实操方面主要是应用,分析一些后台数据做一些分析材料用。sqlserver管理上多少熟悉一些。
大概2002年左右因为工作需要曾经学习过asp,也建过一个简单的网站,主要是从系统的sqlserver数据库中取出所需数据展现出来,多少熟悉一些html方面的东东,也了解与数据库通讯及互操作的一些东东。
2011年左右曾经因为一些原因需要做个网站,当时想学c#来着,使用mvc来架构网站。但最终没学会。。。
 
下面开始进入正题:
操作系统是win10
python环境是了3.7,把2.0卸载了(虽然我学的教程是2.0。。。)
根据tushare的推荐模块安装了 Anaconda,( https://tushare.pro/document/1?doc_id=6
编写用pycharm 2018.2.4
开始使用pycharm开始尝试写代码。
 
先尝试使用tushare获取一些数据,看一下。
 
果然输出了与范例一致的结果
 
 
 
 
得到结果:
 
嗯得到预期结果。
 
这些数据需要保存,看到了有文件读写那个章节的内容,想尝试一下写入文件看看。
 
额,执行出错了。看结果text.txt只有0字节,没写进去。
看错误提示是:必须是str,不能使DataFrame...
额,看来我df得到的返回结果实际上是一个DataFrame。。。
那这个DataFrame是个什么鬼?百度看看吧。。
整条错误丢下去百度发现不得要领,干脆直接百度python dataframe。
后面找到了 http://www.dcharm.com/?p=584Pandas dataframe数据写入文件和数据库(向作者致谢:))
在这里面介绍了dataframe是个什么东东
datafrom:Pandas是Python下一个开源数据分析的库,它提供的数据结构DataFrame极大的简化了数据分析过程中一些繁琐操作,DataFrame是一张多维的表,大家可以把它想象成一张Excel表单或者Sql表。
嗯这就了解了datafrom是一张多维表,是pandas提供的数据结构。
有5种使用方法:
1. Dataframe写入到csv文件 dateframe.to_csv()
2. Dataframe写入到json文件dateframe.to_json()
3.Dataframe写入到html文件dateframe.to_html()
4.Dataframe写入到剪贴板中dateframe.to_clipboard()
5.Dataframe写入到数据库中dateframe.to_sql()
那先看看怎么写到csv文件吧。
范例:df.to_csv('D:\\a.csv', sep=',', header=True, index=True)
 
写入CSV成功。
比较熟悉数据库,如果把这些股票数据都入库了可以就可以比较自由分析了是吧。所以下一步就是看看怎么把数据存入到数据库。
其他的额,用到的时候再说:)
 
从资料来看,很多范例都是用mysql做的,所以现装一个用用试试。
mysql第一次安装的时候下载的是mysql-8.0.13-winx64.zip,根据网上资料,怎么折腾都折腾不起来,大概浪费了8,9个小时之后决定放弃。
重新在官网上下载了mysql-installer-community-8.0.13.0.msi,一步一步的安装完成启动成功。
使用workbench 8.0 CE,启动并建立新的数据库成功、建表成功。
有点头疼的是看不太懂e文,使用摸索起来比较困难。
后面下载了navicat安装完成之后,连接localhost出现2013-lost connection to MySQL server at 'waiting for initial communication packet' system error 0.
折腾了好5,6个小时没弄好。放弃。。。。先用workbench吧。。(这个问题有点奇怪不过不想在这方面花太多时间回头有时间再研究。)
 
好吧下面就试一下能不能把数据写入数据库了。
要写入数据库,必须先建立与数据库的连接,查教程得到访问数据的方法如下:
 
写入依葫芦画瓢,把代码添加进来。
额。。。提示没有这个模块。。。。
好吧,那就安装一下看看。。
额,木有。。。咋回事儿?百度下看看吧。。
这里有写到py3不支持mysqldb的模式
汗,好吧,不支持了。。
那去菜鸟那边的py3教程里看看py3怎么连接mysql数据库。。
http://www.runoob.com/python3/python3-mysql.html Python3 MySQL 数据库连接 - PyMySQL 驱动
哦,要先安装PyMySQL,好吧,安装完成。
把代码改一下运行看看。。
又出错了。。
什么鬼?提示没有pymysql模块,执行安装又提示已经安装了。。。
 
好吧,继续百度。。用了几个关键词搜索都不得要领,最后百度“python to_sql mysql”
在第一篇里面找到了解决办法。
ok,根据文中提示修改了代码。
执行。。。然后又报错。。
.
看了一下csv文件为刚刚生成的。再看一下数据库里面
 
有生成目标表。
可以查到数据
比较了一下两者的记录数一致。写入数据库成功。
再查一下为啥提示错误吧。
 
字符集不匹配。。按照网上的在my.ini中加入了这个default-character-set=utf8
检查数据库字符集
 
貌似也是utf8的。。
看来还有其他原因。。。
额,花了5,6个小时也没搞定,貌似有一种说法是系统bug。。
因为写的这张表中不涉及中文全部是数字和字母,所以应该不是我安装的字符集之间不匹配的原因,也检查过了无论是python还是mysql全部是utf8。
既然这个错误不影响数据写入就先不去管它了,以后有机会再了解。
另外关于dataframe.to_sql以及数据库连接panda  本身也有介绍,e文的记录下来有空好好看一下。 http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.to_sql.html#r16
 
前面确认了tushare数据可用性,也确认了可以写入数据库,那么就考虑一下如何搭建数据吧。
根据tushare数据接口的介绍,把可获取的数据都整理了一下。构思一下如何构架这个数据库。
 
 
以上为2018年11月8日(含)前学习内容
 
PS:有一些东东已经记得不是很清楚了,特别是最后数据库部分的我记得当时解决路径比写出来的复杂。。所以还是要写笔记啊:)
 另外有哪位高手知道我遇到问题的解决办法还请多指点,多谢多谢!
 
问题集:
存在未解决的问题至(11月10日):
1、python文件操作部分,怎么读写,以及按照自己想要的格式写入,跳过去了没有深入研究,后面要补上。
2、mysql数据库使用workbench可以连接,使用Navicat Premium没有办法连接,问题未解决。
3、写入数据库时提示告警,字符集不匹配(可能是),据说是bug,但未确认,问题未解决。
4、目前没有编程的思路和概念,还是当做交互式操作工具的方式写代码,后续要找一些资料来学习。
 
 
错题本:
11月9日
1、
错误:
 
import tushare as suck
pro=suck.pro_api()
df1=suck.pro.query('stock_basic', exchange='', list_status='L', fields='ts_code,symbol,name,area,industry,list_date')
df1.to_csv('basic.csv',sep=',',header=True,index=True)
 
执行报错
C:\Users\marses\PycharmProjects\untitled>python suck_sql.py
Traceback (most recent call last):
  File "suck_sql.py", line 14, in <module>
    df1=suck.pro.query('stock_basic', exchange='', list_status='L', fields='ts_code,symbol,name,area,industry,list_date')
AttributeError: module 'tushare.pro' has no attribute 'query'
错误原因:
前面pro定义指向的是suck.pro_api
而后面应用的时候使用了
suck.pro.query()
因为模块suck里面既有pro,也有pro_api
而下面代码实际目的是使用suck.pro_api.query的方法。如果使用suck.pro.query则指回了原来pro去了。
反省:抄代码时要认真查看实际原文是有写清楚的,看的时候没注意。
另外自己在写代码定义的时候尽量避开这种容易混淆的变量命名。
2、字符集设置为utf8的确切格式
# coding=utf-8
或者
# -*- coding: utf-8 -*-
额还有说法是utf8和utf-8是一种编码格式,
在python 里都认为是一种编码格式utf-8。
确定下,以后自己写都用# coding=utf-8
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

猜你喜欢

转载自www.cnblogs.com/marses/p/9937895.html