You must either define the environment variable DJANGO_SETTINGS_MODULE

python李魔佛 发表了文章 • 0 个评论 • 55 次浏览 • 2017-10-08 12:41 • 来自相关话题

代码如下:
from django import template
def template_usage():
t = template.Template('My name is {{ name }}')
c = template.Context({'name':'Rocky'})
print t.render(c)

template_usage()
就出错了。
 
这个原因一般就是直接使用python或者ipython交互解析器造成的。
 
你需要切换到你的django目录,然后使用python manager.py shell 运行, 然后执行上面的函数或者代码, 就不会再出现这个错误了
 
django.core.exceptions.ImproperlyConfigured: Requested setting TEMPLATES, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings.
 
  查看全部
代码如下:
from django import template
def template_usage():
t = template.Template('My name is {{ name }}')
c = template.Context({'name':'Rocky'})
print t.render(c)

template_usage()

就出错了。
 
这个原因一般就是直接使用python或者ipython交互解析器造成的。
 
你需要切换到你的django目录,然后使用python manager.py shell 运行, 然后执行上面的函数或者代码, 就不会再出现这个错误了
 
django.core.exceptions.ImproperlyConfigured: Requested setting TEMPLATES, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings.
 
 

儿歌多多 离线下载

python爬虫李魔佛 发表了文章 • 0 个评论 • 87 次浏览 • 2017-09-28 23:44 • 来自相关话题

等有空的时候实现这个功能。
嗅探app的下载路径,然后抓取数据
等有空的时候实现这个功能。
嗅探app的下载路径,然后抓取数据

蓝灯邀请码 KVJN7M

网络李魔佛 发表了文章 • 0 个评论 • 110 次浏览 • 2017-09-27 22:51 • 来自相关话题

 
好友购买两年套餐后,会赠送双方3个月专业版;好友购买一年套餐后,则赠送双方1个月
 
用着感觉还不错,顺便推广下. 
用不用邀请码随意, 只是用了后你会获得多一个月或者3个月的使用时间.
 
我当时也是在网上随意找了一个邀请码来用, 结果是无效的...... 目前这个邀请码KVJN7M  2年内有效.  查看全部


蓝灯.PNG


 
好友购买两年套餐后,会赠送双方3个月专业版;好友购买一年套餐后,则赠送双方1个月
 
用着感觉还不错,顺便推广下. 
用不用邀请码随意, 只是用了后你会获得多一个月或者3个月的使用时间.
 
我当时也是在网上随意找了一个邀请码来用, 结果是无效的...... 目前这个邀请码KVJN7M  2年内有效. 

win7 修改mysql my.ini配置文件出错,提示文件被其他应用程序占用

网络安全李魔佛 发表了文章 • 5 个评论 • 89 次浏览 • 2017-09-24 15:58 • 来自相关话题

准备把mysql的数据库导出到excel文档,使用的命令是:

select * from tb_advertiser.tb_advertiser into outfile 'tbads.xls';

结果出现了错误: The MySQL server is running with the --secure-file-priv option
 
于是按照网上的教程去修改my.ini的配置文件, 添加这一行:
secure_file_priv=' '         #-- 不对mysqld 的导入 导出做限制
 
 
结果保存的时候一直提示我的my.ini配置文件被占用, 当然理所当然的, 因为mysql正在运行着呢. 于是手工把mysql的所有的服务都关掉, 再重新编辑并保存,
 
不过这个报错还是照样出错.
 
折腾一番, 踩了写坑后, 尝试把myini的权限给修改成完全控制后, my.ini文件就可以被修改并保存了.
 
 
问题症结: 文件默认权限只能是user的. 需要把其他用户的权限给到my.ini配置文件 查看全部
准备把mysql的数据库导出到excel文档,使用的命令是:

select * from tb_advertiser.tb_advertiser into outfile 'tbads.xls';

结果出现了错误: The MySQL server is running with the --secure-file-priv option
 
于是按照网上的教程去修改my.ini的配置文件, 添加这一行:
secure_file_priv=' '         #-- 不对mysqld 的导入 导出做限制
 
 
结果保存的时候一直提示我的my.ini配置文件被占用, 当然理所当然的, 因为mysql正在运行着呢. 于是手工把mysql的所有的服务都关掉, 再重新编辑并保存,
 
不过这个报错还是照样出错.
 
折腾一番, 踩了写坑后, 尝试把myini的权限给修改成完全控制后, my.ini文件就可以被修改并保存了.
 
 
问题症结: 文件默认权限只能是user的. 需要把其他用户的权限给到my.ini配置文件

泽塔币钱包下载

股票李魔佛 发表了文章 • 0 个评论 • 97 次浏览 • 2017-09-23 15:12 • 来自相关话题

最近国内的币市差不多都被关闭了, 一些币需要转出来, 就需要转到个人的对应钱包.
 
一些币的钱包软件比较难找, 需要翻墙. 
 
个人整理了一些常见的币, 如泽塔币,狗狗币的钱包, 可以下载下来把网址上的币提取出来.
 
 
最近国内的币市差不多都被关闭了, 一些币需要转出来, 就需要转到个人的对应钱包.
 
一些币的钱包软件比较难找, 需要翻墙. 
 
个人整理了一些常见的币, 如泽塔币,狗狗币的钱包, 可以下载下来把网址上的币提取出来.
 
 

30天学会django

python李魔佛 发表了文章 • 0 个评论 • 144 次浏览 • 2017-09-17 23:40 • 来自相关话题

没错,最近30天开始要折腾这玩意。
 
先放个标题出来。 每天不定时更新。
 
 
我用的视频教程是cstv的那一个系列教程。
 
不推荐那个django中文手册的,因为文档比较旧,很多命令或者代码是无法再新版的django上运行通过的。 这个会比较打击人。
 

  查看全部
没错,最近30天开始要折腾这玩意。
 
先放个标题出来。 每天不定时更新。
 
 
我用的视频教程是cstv的那一个系列教程。
 
不推荐那个django中文手册的,因为文档比较旧,很多命令或者代码是无法再新版的django上运行通过的。 这个会比较打击人。
 

 

批量下载懒人听书mp3文件

python爬虫李魔佛 发表了文章 • 2 个评论 • 187 次浏览 • 2017-09-14 01:09 • 来自相关话题

懒人听书是一个不错的在线听书网站, 最近用电脑网页在听。打算把音频文件给下载到手机上,平时的空余时间听听。不过网页版并不提供下载功能。





 
只有安装app后才能下载。
 
装了app也只能一个一个地去下载,所以索性一次过下载全部的音频吧。
 
方法很简单,代码很短。 你也可以看得懂。
 
以财经郎眼的节目音频为例。 其他的节目内容方法差不多的。
 
浏览器打开页面:
http://www.lrts.me/book/32551
 
然后按F12打开调试窗口,我用的是chrome
 
然后看到网页底下有下一页的按钮,点击下一页,看看每一页的url. 就能找到具体的下一页的url.
(待续)
 
 
python代码:
# coding: utf-8
# http://30daydo.com
import urllib

import os
import requests
import time
from lxml import etree
from header_toolkit import getheader


def spider():
curr=os.getcwd()
target_dir=os.path.join(curr,'data')
if not os.path.exists(target_dir):
os.mkdir(target_dir)
for i in range(1, 100, 10):
url = 'http://www.lrts.me/ajax/playlist/2/32551/%d' % i
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36'}
s = requests.get(url=url, headers=headers)
tree = etree.HTML(s.text)
nodes = tree.xpath('//*[starts-with(@class,"clearfix section-item section")]')
print len(nodes)
for node in nodes:
filename = node.xpath('.//div[@class="column1 nowrap"]/span/text()')[0]
link = node.xpath('.//input[@name="source" and @type="hidden"]/@value')[0]

print link
post_fix=link.split('.')[-1]
full_path= filename+'.'+post_fix
urllib.urlretrieve(link, filename=os.path.join(target_dir,full_path))
time.sleep(1)


if __name__ == '__main__':
spider()

抓取的内容:

 





  查看全部
懒人听书是一个不错的在线听书网站, 最近用电脑网页在听。打算把音频文件给下载到手机上,平时的空余时间听听。不过网页版并不提供下载功能。

懒人听书1.PNG

 
只有安装app后才能下载。
 
装了app也只能一个一个地去下载,所以索性一次过下载全部的音频吧。
 
方法很简单,代码很短。 你也可以看得懂。
 
以财经郎眼的节目音频为例。 其他的节目内容方法差不多的。
 
浏览器打开页面:
http://www.lrts.me/book/32551
 
然后按F12打开调试窗口,我用的是chrome
 
然后看到网页底下有下一页的按钮,点击下一页,看看每一页的url. 就能找到具体的下一页的url.
(待续)
 
 
python代码:
# coding: utf-8
# http://30daydo.com
import urllib

import os
import requests
import time
from lxml import etree
from header_toolkit import getheader


def spider():
curr=os.getcwd()
target_dir=os.path.join(curr,'data')
if not os.path.exists(target_dir):
os.mkdir(target_dir)
for i in range(1, 100, 10):
url = 'http://www.lrts.me/ajax/playlist/2/32551/%d' % i
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36'}
s = requests.get(url=url, headers=headers)
tree = etree.HTML(s.text)
nodes = tree.xpath('//*[starts-with(@class,"clearfix section-item section")]')
print len(nodes)
for node in nodes:
filename = node.xpath('.//div[@class="column1 nowrap"]/span/text()')[0]
link = node.xpath('.//input[@name="source" and @type="hidden"]/@value')[0]

print link
post_fix=link.split('.')[-1]
full_path= filename+'.'+post_fix
urllib.urlretrieve(link, filename=os.path.join(target_dir,full_path))
time.sleep(1)


if __name__ == '__main__':
spider()


抓取的内容:

 

懒人听书.PNG

 

onedrive 登录出现证书问题

网络安全李魔佛 发表了文章 • 0 个评论 • 139 次浏览 • 2017-09-09 21:57 • 来自相关话题

最近出现了意见怪事, 家里的电脑的onedrive在登录的时候总是弹出一个窗口,说证书的名字不匹配.
 
于是参看了下证书, (ie的上网设置-内容-证书), 的确,证书的名字是一个奇怪的网站.
 
开始怀疑是不是fiddler的证书修改了系统的一些证书,于是把fidder卸载了. 重新登录试试.
 
问题依旧存在, 于是把查看每一个证书,发现里面不少fiddler的证书在里头, 名字类似于 DO_NOT_TRUST******
 
于是手工把这些证书给删除掉了. 再命令行里面输入mmc, 打开控制台,选择我的账号, 然后打开证书选项
 
重新登录onedrive, 可是问题并没有解决. 重启了一次机器,问题依然在.
 
卸载onedrive,到官网下载了一个最新的版本.
 
问题依然存在............
 
快崩溃了, 本身用的好好的金山快盘, 停止运营, 所剩能用的onedrive也出现这样的问题.
 
搜索了一下这种问题, 发现并没有很多人遇到. 在国外的论坛中找到微软的官方回答,说是你的系统时间和服务器的时间出现偏差.
 
于是手工调节时间, 换了一个时间同步服务器. 不过,问题还是依然存在. OMG.....
 
最后无奈,想着最近做了哪些操作.
 
想起之前一个星期,我把系统的hosts替换了, 换成了一个还有google,youtube, facebook,twitter IP的hosts, 当时想着用来翻墙用的.  所以我觉得可能这些ip把onedrive的网址映射到其他地方了. 导致我的登录失败了..
 
于是只好把hosts的文件内容清空了.
 
重试一遍, okay, 问题得到了解决!!!!!
 
自己给自己挖了一个好大的坑..
  查看全部
最近出现了意见怪事, 家里的电脑的onedrive在登录的时候总是弹出一个窗口,说证书的名字不匹配.
 
于是参看了下证书, (ie的上网设置-内容-证书), 的确,证书的名字是一个奇怪的网站.
 
开始怀疑是不是fiddler的证书修改了系统的一些证书,于是把fidder卸载了. 重新登录试试.
 
问题依旧存在, 于是把查看每一个证书,发现里面不少fiddler的证书在里头, 名字类似于 DO_NOT_TRUST******
 
于是手工把这些证书给删除掉了. 再命令行里面输入mmc, 打开控制台,选择我的账号, 然后打开证书选项
 
重新登录onedrive, 可是问题并没有解决. 重启了一次机器,问题依然在.
 
卸载onedrive,到官网下载了一个最新的版本.
 
问题依然存在............
 
快崩溃了, 本身用的好好的金山快盘, 停止运营, 所剩能用的onedrive也出现这样的问题.
 
搜索了一下这种问题, 发现并没有很多人遇到. 在国外的论坛中找到微软的官方回答,说是你的系统时间和服务器的时间出现偏差.
 
于是手工调节时间, 换了一个时间同步服务器. 不过,问题还是依然存在. OMG.....
 
最后无奈,想着最近做了哪些操作.
 
想起之前一个星期,我把系统的hosts替换了, 换成了一个还有google,youtube, facebook,twitter IP的hosts, 当时想着用来翻墙用的.  所以我觉得可能这些ip把onedrive的网址映射到其他地方了. 导致我的登录失败了..
 
于是只好把hosts的文件内容清空了.
 
重试一遍, okay, 问题得到了解决!!!!!
 
自己给自己挖了一个好大的坑..
 

怎么判断你用的代理是高度匿名还是透明的

python爬虫李魔佛 发表了文章 • 0 个评论 • 192 次浏览 • 2017-09-06 20:42 • 来自相关话题

先介绍下什么事高度匿名代理和透明代理.
 

你用透明代理上QQ,对方还是能看到你的本来的IP
只有用匿名和高匿名才不会被对方看到IP.

详细的说:
匿名代理:
如果从隐藏使用代理用户的级别上划分,代理可以分为三种,即高度匿名代理、普通匿名代理和透明代理。

(1)高度匿名代理不改变客户机的请求,这样在服务器看来就像有个真正的客户浏览器在访问它,这时客户的真实IP是隐藏的,服务器端不会认为我们使用了代理。

(2)普通匿名代理能隐藏客户机的真实IP,但会改变我们的请求信息,服务器端有可能会认为我们使用了代理。不过使用此种代理时,虽然被访问的网站不能知道你的ip地址,但仍然可以知道你在使用代理,当然某些能够侦测ip的网页仍然可以查到你的ip。

(3)透明代理,它不但改变了我们的请求信息,还会传送真实的IP地址。
三者隐藏使用代理者身份的级别依次为高度匿名代理最隐蔽,其次是普通匿名代理,最差的是透明代理。
 
 
把你找到的代理iP,在你的浏览器里设置一下, 具体可以百度谷歌, 不难.
 
然后用浏览器打开这个网站:
 
http://members.3322.org/dyndns/getip
 
网站返回很简单, 就是你当前的iP地址. 据目前使用那么多的检测iP地址的网站来看,这个网站最准.
 
用代理打开这个网站,如果网站显示的是你代理IP,那么说明你的ip是高度匿名的.
如果网站显示的是有2个ip,那么你的代理是透明的, 第一个ip是你的原始ip,而第二个ip是你用的代理ip.
 





 
  查看全部
先介绍下什么事高度匿名代理和透明代理.
 

你用透明代理上QQ,对方还是能看到你的本来的IP
只有用匿名和高匿名才不会被对方看到IP.

详细的说:
匿名代理:
如果从隐藏使用代理用户的级别上划分,代理可以分为三种,即高度匿名代理、普通匿名代理和透明代理。

(1)高度匿名代理不改变客户机的请求,这样在服务器看来就像有个真正的客户浏览器在访问它,这时客户的真实IP是隐藏的,服务器端不会认为我们使用了代理。

(2)普通匿名代理能隐藏客户机的真实IP,但会改变我们的请求信息,服务器端有可能会认为我们使用了代理。不过使用此种代理时,虽然被访问的网站不能知道你的ip地址,但仍然可以知道你在使用代理,当然某些能够侦测ip的网页仍然可以查到你的ip。

(3)透明代理,它不但改变了我们的请求信息,还会传送真实的IP地址。
三者隐藏使用代理者身份的级别依次为高度匿名代理最隐蔽,其次是普通匿名代理,最差的是透明代理。
 
 
把你找到的代理iP,在你的浏览器里设置一下, 具体可以百度谷歌, 不难.
 
然后用浏览器打开这个网站:
 
http://members.3322.org/dyndns/getip
 
网站返回很简单, 就是你当前的iP地址. 据目前使用那么多的检测iP地址的网站来看,这个网站最准.
 
用代理打开这个网站,如果网站显示的是你代理IP,那么说明你的ip是高度匿名的.
如果网站显示的是有2个ip,那么你的代理是透明的, 第一个ip是你的原始ip,而第二个ip是你用的代理ip.
 

ip代理.PNG

 
 

mongodb中$sum:1 后面的1是什么意思

python李魔佛 发表了文章 • 0 个评论 • 147 次浏览 • 2017-09-05 23:32 • 来自相关话题

源数据:
{
"_id" : "GuqXmAkkARqhBDqhy",
"beatmapset_id" : "342537",
"version" : "MX",
"diff_approach" : "5",
"artist" : "Yousei Teikoku",
"title" : "Kokou no Sousei",
"difficultyrating" : "3.5552737712860107"
}
{
"_id" : "oHLT7KqsB7bztBGvu",
"beatmapset_id" : "342537",
"version" : "HD",
"diff_approach" : "5",
"artist" : "Yousei Teikoku",
"title" : "Kokou no Sousei",
"difficultyrating" : "2.7515676021575928"
}
{
"_id" : "GbotZfrPEwW69FkGD",
"beatmapset_id" : "342537",
"version" : "NM",
"diff_approach" : "5",
"artist" : "Yousei Teikoku",
"title" : "Kokou no Sousei",
"difficultyrating" : "0"
}
 然后运行以下的命令:
 
db.getCollection('dup_case').aggregate(
[
{$group:{
_id:{diff_approach:'$diff_approach'},
count:{$sum:2}
}},
{$match:{count:{$gt:1}}}
]

 
返回的count是6
 
所以
$sum:1 的含义:
如果前面的情况出现一次,就加1, 如果后面$sum:2 那么每次前面条件满足一次就加2
  查看全部
源数据:
{
"_id" : "GuqXmAkkARqhBDqhy",
"beatmapset_id" : "342537",
"version" : "MX",
"diff_approach" : "5",
"artist" : "Yousei Teikoku",
"title" : "Kokou no Sousei",
"difficultyrating" : "3.5552737712860107"
}
{
"_id" : "oHLT7KqsB7bztBGvu",
"beatmapset_id" : "342537",
"version" : "HD",
"diff_approach" : "5",
"artist" : "Yousei Teikoku",
"title" : "Kokou no Sousei",
"difficultyrating" : "2.7515676021575928"
}
{
"_id" : "GbotZfrPEwW69FkGD",
"beatmapset_id" : "342537",
"version" : "NM",
"diff_approach" : "5",
"artist" : "Yousei Teikoku",
"title" : "Kokou no Sousei",
"difficultyrating" : "0"
}

 然后运行以下的命令:
 
db.getCollection('dup_case').aggregate(
[
{$group:{
_id:{diff_approach:'$diff_approach'},
count:{$sum:2}
}},
{$match:{count:{$gt:1}}}
]
)
 
 
返回的count是6
 
所以
$sum:1 的含义:
如果前面的情况出现一次,就加1, 如果后面$sum:2 那么每次前面条件满足一次就加2
 

python print 打印 % 百分号

python李魔佛 发表了文章 • 0 个评论 • 144 次浏览 • 2017-09-05 21:27 • 来自相关话题

记得以前困扰过自己的一个问题.
当时的解决方式是这样的:
 

a = 1
print "a values is ", a, "%"
 
把百分号切割开来.
 
后来才知道,正确显示百分号的方法:
 
 print 'a values is %d%%' %a
 用2个百分号来标示.
 
 
  查看全部
记得以前困扰过自己的一个问题.
当时的解决方式是这样的:
 

a = 1
print "a values is ", a, "%"
 
把百分号切割开来.
 
后来才知道,正确显示百分号的方法:
 
 
print 'a values is %d%%' %a

 用2个百分号来标示.
 
 
 

Python 学习笔记2.1 ——数据类型和结构

pythonsicily02 发表了文章 • 2 个评论 • 203 次浏览 • 2017-08-29 13:22 • 来自相关话题

电脑配置:windows 64位
Python版本:3.6.0
 
学习内容: 量化分析师的Python日记【第1天:谁来给我讲讲Python?】 以下为转载加自己的笔记
         
一、容器
1,什么是容器

Python中有一种名为容器的数据结构,包括序列和字典,序列又包括列表、元组、字符串等
 




 
列表的基本形式比如:[1,3,6,10]或者[‘yes’,’no’,’OK’]

元组的基本形式比如:(1,3,6,10)或者(‘yes’,’no’,’OK’)

字符串的基本形式比如:’hello’
 
以上几种属于序列,序列中的每一个元素都被分配一个序号——即元素的位置,也称为“索引”,第一个索引,即第一个元素的位置是0,第二个是1,依次类推。列表和元组的区别主要在于,列表可以修改,而元组不能(注意列表用中括号而元组用括号)。
 
索引是从0开始的





 
2. 序列的一些通用操作

除了上面说到的索引,列表、元组、字符串等这些序列还有一些共同的操作。

(1)索引(补充上面)

序列的最后一个元素的索引,也可以是-1,倒数第二个也可以用-2,依次类推:





 
(2)分片

使用分片操作来访问一定范围内的元素,它的格式为:

a[开始索引:结束索引:步长]

那么访问的是,从开始索引号的那个元素,到结束索引号-1的那个元素,每间隔步长个元素访问一次,步长可以忽略,默认步长为1。





 
 
  查看全部
电脑配置:windows 64位
Python版本:3.6.0
 
学习内容: 量化分析师的Python日记【第1天:谁来给我讲讲Python?】 以下为转载加自己的笔记
         
一、容器
1,什么是容器

Python中有一种名为容器的数据结构,包括序列和字典,序列又包括列表、元组、字符串等
 
1.png

 
列表的基本形式比如:[1,3,6,10]或者[‘yes’,’no’,’OK’]

元组的基本形式比如:(1,3,6,10)或者(‘yes’,’no’,’OK’)

字符串的基本形式比如:’hello’
 
以上几种属于序列,序列中的每一个元素都被分配一个序号——即元素的位置,也称为“索引”,第一个索引,即第一个元素的位置是0,第二个是1,依次类推。列表和元组的区别主要在于,列表可以修改,而元组不能(注意列表用中括号而元组用括号)。
 
索引是从0开始的

2.png

 
2. 序列的一些通用操作

除了上面说到的索引,列表、元组、字符串等这些序列还有一些共同的操作。

(1)索引(补充上面)

序列的最后一个元素的索引,也可以是-1,倒数第二个也可以用-2,依次类推:

微信截图_20170908173242.png

 
(2)分片

使用分片操作来访问一定范围内的元素,它的格式为:

a[开始索引:结束索引:步长]

那么访问的是,从开始索引号的那个元素,到结束索引号-1的那个元素,每间隔步长个元素访问一次,步长可以忽略,默认步长为1。

微信截图_20170908173417.png

 
 
 

Python 学习笔记1.2——第三方库安装

pythonsicily02 发表了文章 • 0 个评论 • 131 次浏览 • 2017-08-27 18:23 • 来自相关话题

电脑配置:windows 64位
python版本:3.6.0
 
一、前往第三方网站下载所需要的包
 
http://www.lfd.uci.edu/~gohlke/pythonlibs/ 
 
二、使用pip安装
 
pip install xxx




  查看全部
电脑配置:windows 64位
python版本:3.6.0
 
一、前往第三方网站下载所需要的包
 
http://www.lfd.uci.edu/~gohlke/pythonlibs/ 
 
二、使用pip安装
 
pip install xxx
5.png

 

Python 学习笔记 1.1——cmd操作

pythonsicily02 发表了文章 • 2 个评论 • 192 次浏览 • 2017-08-27 15:21 • 来自相关话题

电脑配置:64位 windows
安装的python版本:3.6.0

一、目录切换

1、如果要访问D盘,先输入D:
 



2、如果要进入D盘里某一个文件夹,再输入cd Python(比如我要进入D盘下的Python文件夹)
  如果还要再往里 继续cd XXX 
  



3、返回上级目录 cd..

二、如何在cmd中使用复制粘贴 

  右键cmd窗口的标题栏,点击属性,勾选快速编辑模式,再确定 
 



 
  粘贴时,按 Alt space E P
  
        查看全部
电脑配置:64位 windows
安装的python版本:3.6.0

一、目录切换

1、如果要访问D盘,先输入D:
 
1.png

2、如果要进入D盘里某一个文件夹,再输入cd Python(比如我要进入D盘下的Python文件夹)
  如果还要再往里 继续cd XXX 
  
2.png

3、返回上级目录 cd..

二、如何在cmd中使用复制粘贴 

  右键cmd窗口的标题栏,点击属性,勾选快速编辑模式,再确定 
 
4.png

 
  粘贴时,按 Alt space E P
  
       

python redis 笔记

python李魔佛 发表了文章 • 0 个评论 • 121 次浏览 • 2017-08-24 20:33 • 来自相关话题

刚接触redis,难免会有那么一些坑,新人一定会踩到的。 把自己的坑写出来,让以后新人少踩点吧。 
踩坑也不是什么坏事,不过浪费点时间而已。
 
1. 配置文件redis.config
 
如果你要远程访问你的redis服务器,那么里面有一行你一定要注释掉:

# bind 127.0.0.1
 
 
解释:

#  指定 redis 只接收来自于该 IP 地址的请求,如果不进行设置,那么将处理所有请求
# bind 192.168.1.100 10.0.0.1
# bind 127.0.0.1
 
 
当时调了半天没连上去,就是被这个参数给害的。
 
2. redis-cli 连接本地redis服务器。 本地服务器端口已经改变。
开始使用redis-cli 127.0.0.1:8888 结果是一直都出错。
然后在某个配置文档看到测试本地端口,使用的命令是 redis-cli -p 8888
不然上面的永远都会连着6379.
 
待续。 不定期更新。 
 
 
 
 
 
 
 
 
  查看全部
刚接触redis,难免会有那么一些坑,新人一定会踩到的。 把自己的坑写出来,让以后新人少踩点吧。 
踩坑也不是什么坏事,不过浪费点时间而已。
 
1. 配置文件redis.config
 
如果你要远程访问你的redis服务器,那么里面有一行你一定要注释掉:

# bind 127.0.0.1
 
 
解释:

#  指定 redis 只接收来自于该 IP 地址的请求,如果不进行设置,那么将处理所有请求
# bind 192.168.1.100 10.0.0.1
# bind 127.0.0.1
 
 
当时调了半天没连上去,就是被这个参数给害的。
 
2. redis-cli 连接本地redis服务器。 本地服务器端口已经改变。
开始使用redis-cli 127.0.0.1:8888 结果是一直都出错。
然后在某个配置文档看到测试本地端口,使用的命令是 redis-cli -p 8888
不然上面的永远都会连着6379.
 
待续。 不定期更新。 
 
 
 
 
 
 
 
 
 

lxml.etree._ElementUnicodeResult 转为字符

python爬虫李魔佛 发表了文章 • 0 个评论 • 308 次浏览 • 2017-08-14 15:57 • 来自相关话题

在爬虫过程中,使用的是lxml的xpath查找对应的字段。
 

address=each.xpath('.//address/text()')[0].strip()
 
结果用address与一般的字符进行拼接时,总是出现
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe4 in position 0: ordinal not in range(128)
 
这种错误。
 
主要因为python2的蛋疼的编码原因。
 
解决办法:
根据lxml的官方文档:http://lxml.de/api/lxml.etree._ElementUnicodeResult-class.html
 

object --+ | basestring --+ | unicode --+ | _ElementUnicodeResult
 
_ElementUnicodeResult 是unicode的一个子类。
 
那么可以直接将它转为unicode
 
address.encode('utf-8') 就可以了。
  查看全部
在爬虫过程中,使用的是lxml的xpath查找对应的字段。
 

address=each.xpath('.//address/text()')[0].strip()
 
结果用address与一般的字符进行拼接时,总是出现
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe4 in position 0: ordinal not in range(128)
 
这种错误。
 
主要因为python2的蛋疼的编码原因。
 
解决办法:
根据lxml的官方文档:http://lxml.de/api/lxml.etree._ElementUnicodeResult-class.html
 

object --+ | basestring --+ | unicode --+ | _ElementUnicodeResult
 
_ElementUnicodeResult 是unicode的一个子类。
 
那么可以直接将它转为unicode
 
address.encode('utf-8') 就可以了。
 

修改python的默认最大递归层数

python李魔佛 发表了文章 • 0 个评论 • 160 次浏览 • 2017-08-10 16:00 • 来自相关话题

python里面为了性能,默认的递归次数不能超过1000次。
 
运行下面的代码:
def recursion(n):
if(n <= 0):
print n
return
print n
recursion(n - 1)

if __name__ == "__main__":
recursion(1200)
返回下面的错误:
 
  File "C:/Git/base_function/resursion_usage.py", line 7, in recursion
    recursion(n - 1)
RuntimeError: maximum recursion depth exceeded
 
解决办法: 修改python默认的递归层数。
在程序开头的地方添加以下语句:
 
import sys
sys.setrecursionlimit(1500)
然后再次运行,就不会有上面的错误信息了。
  查看全部
python里面为了性能,默认的递归次数不能超过1000次。
 
运行下面的代码:
def recursion(n): 
if(n <= 0):
print n
return
print n
recursion(n - 1)

if __name__ == "__main__":
recursion(1200)

返回下面的错误:
 
  File "C:/Git/base_function/resursion_usage.py", line 7, in recursion
    recursion(n - 1)
RuntimeError: maximum recursion depth exceeded
 
解决办法: 修改python默认的递归层数。
在程序开头的地方添加以下语句:
 
import sys
sys.setrecursionlimit(1500)

然后再次运行,就不会有上面的错误信息了。
 

apt-get安装软件时 需要依赖更低版本的依赖库 通用解决办法

Linux李魔佛 发表了文章 • 0 个评论 • 177 次浏览 • 2017-08-08 23:35 • 来自相关话题

比如ubuntu尝试安装sqlite3,
xda@xda-dt:~$ sudo apt-get install sqlite3 libsqlite3-0=3.7.9-2ubuntu1.1
Reading package lists... Done
Building dependency tree
Reading state information... Done
libsqlite3-0 is already the newest version.
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
sqlite3 : Depends: libsqlite3-0 (= 3.7.9-2ubuntu1) but 3.7.9-2ubuntu1.1 is to be installed
E: Unable to correct problems, you have held broken packages.
会出现上面的问题。
 
方法1,使用aptitude 安装。
 
xda@xda-dt:~$ sudo aptitude install sqlite3
The following NEW packages will be installed:
sqlite3{b}
0 packages upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 26.9 kB of archives. After unpacking 174 kB will be used.
The following packages have unmet dependencies:
sqlite3 : Depends: libsqlite3-0 (= 3.7.9-2ubuntu1) but 3.7.9-2ubuntu1.1 is installed.
The following actions will resolve these dependencies:

Keep the following packages at their current version:
1) sqlite3 [Not Installed]



Accept this solution? [Y/n/q/?] n
The following actions will resolve these dependencies:

Downgrade the following packages:
1) libsqlite3-0 [3.7.9-2ubuntu1.1 (now) -> 3.7.9-2ubuntu1 (precise)]



Accept this solution? [Y/n/q/?] Y
The following packages will be DOWNGRADED:
libsqlite3-0
The following NEW packages will be installed:
sqlite3
0 packages upgraded, 1 newly installed, 1 downgraded, 0 to remove and 0 not upgraded.
Need to get 375 kB of archives. After unpacking 174 kB will be used.
Do you want to continue? [Y/n/?] Y
Get: 1 http://hk.archive.ubuntu.com/ubuntu/ precise/main libsqlite3-0 amd64 3.7.9-2ubuntu1 [348 kB]
Get: 2 http://hk.archive.ubuntu.com/ubuntu/ precise/main sqlite3 amd64 3.7.9-2ubuntu1 [26.9 kB]
Fetched 375 kB in 1s (306 kB/s)
dpkg: warning: downgrading libsqlite3-0 from 3.7.9-2ubuntu1.1 to 3.7.9-2ubuntu1.
(Reading database ... 162912 files and directories currently installed.)
Preparing to replace libsqlite3-0 3.7.9-2ubuntu1.1 (using .../libsqlite3-0_3.7.9-2ubuntu1_amd64.deb) ...
Unpacking replacement libsqlite3-0 ...
Selecting previously unselected package sqlite3.
Unpacking sqlite3 (from .../sqlite3_3.7.9-2ubuntu1_amd64.deb) ...
Processing triggers for man-db ...
Setting up libsqlite3-0 (3.7.9-2ubuntu1) ...
Setting up sqlite3 (3.7.9-2ubuntu1) ...
Processing triggers for libc-bin ...
ldconfig deferred processing now taking place

xda@xda-dt:~$ sqlite3
SQLite version 3.7.9 2011-11-01 00:52:41
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> .exit

  查看全部
比如ubuntu尝试安装sqlite3,
xda@xda-dt:~$ sudo apt-get install sqlite3 libsqlite3-0=3.7.9-2ubuntu1.1
Reading package lists... Done
Building dependency tree
Reading state information... Done
libsqlite3-0 is already the newest version.
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
sqlite3 : Depends: libsqlite3-0 (= 3.7.9-2ubuntu1) but 3.7.9-2ubuntu1.1 is to be installed
E: Unable to correct problems, you have held broken packages.

会出现上面的问题。
 
方法1,使用aptitude 安装。
 
xda@xda-dt:~$ sudo aptitude install sqlite3
The following NEW packages will be installed:
sqlite3{b}
0 packages upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 26.9 kB of archives. After unpacking 174 kB will be used.
The following packages have unmet dependencies:
sqlite3 : Depends: libsqlite3-0 (= 3.7.9-2ubuntu1) but 3.7.9-2ubuntu1.1 is installed.
The following actions will resolve these dependencies:

Keep the following packages at their current version:
1) sqlite3 [Not Installed]



Accept this solution? [Y/n/q/?] n
The following actions will resolve these dependencies:

Downgrade the following packages:
1) libsqlite3-0 [3.7.9-2ubuntu1.1 (now) -> 3.7.9-2ubuntu1 (precise)]



Accept this solution? [Y/n/q/?] Y
The following packages will be DOWNGRADED:
libsqlite3-0
The following NEW packages will be installed:
sqlite3
0 packages upgraded, 1 newly installed, 1 downgraded, 0 to remove and 0 not upgraded.
Need to get 375 kB of archives. After unpacking 174 kB will be used.
Do you want to continue? [Y/n/?] Y
Get: 1 http://hk.archive.ubuntu.com/ubuntu/ precise/main libsqlite3-0 amd64 3.7.9-2ubuntu1 [348 kB]
Get: 2 http://hk.archive.ubuntu.com/ubuntu/ precise/main sqlite3 amd64 3.7.9-2ubuntu1 [26.9 kB]
Fetched 375 kB in 1s (306 kB/s)
dpkg: warning: downgrading libsqlite3-0 from 3.7.9-2ubuntu1.1 to 3.7.9-2ubuntu1.
(Reading database ... 162912 files and directories currently installed.)
Preparing to replace libsqlite3-0 3.7.9-2ubuntu1.1 (using .../libsqlite3-0_3.7.9-2ubuntu1_amd64.deb) ...
Unpacking replacement libsqlite3-0 ...
Selecting previously unselected package sqlite3.
Unpacking sqlite3 (from .../sqlite3_3.7.9-2ubuntu1_amd64.deb) ...
Processing triggers for man-db ...
Setting up libsqlite3-0 (3.7.9-2ubuntu1) ...
Setting up sqlite3 (3.7.9-2ubuntu1) ...
Processing triggers for libc-bin ...
ldconfig deferred processing now taking place

xda@xda-dt:~$ sqlite3
SQLite version 3.7.9 2011-11-01 00:52:41
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> .exit

 

编译cmake到更新的版本 【ubuntu】

Linux李魔佛 发表了文章 • 0 个评论 • 226 次浏览 • 2017-08-05 23:31 • 来自相关话题

ubuntu12.04 的cmake版本是2.8.7, 在一些QT程序下,需要较高的cmake版本。
如果只是使用命令: 
sudo apt-get install cmake 或者sudo apt-get upgrade cmake 
获取到的版本还是2.8.7
 
正确的做法:

cd ~/Downloads/ 
wget http://www.cmake.org/files/v2. ... ar.gz 
tar xzvf cmake-2.8.10.tar.gz 
cd cmake-2.8.10 
./configure 
make -j4 
sudo make install
 
 
关闭命令行后重新开一个命令行,然后运行 cmake --version, 就可以看到你的cmake已经更新到你要的版本。 查看全部
ubuntu12.04 的cmake版本是2.8.7, 在一些QT程序下,需要较高的cmake版本。
如果只是使用命令: 
sudo apt-get install cmake 或者sudo apt-get upgrade cmake 
获取到的版本还是2.8.7
 
正确的做法:

cd ~/Downloads/ 
wget http://www.cmake.org/files/v2. ... ar.gz 
tar xzvf cmake-2.8.10.tar.gz 
cd cmake-2.8.10 
./configure 
make -j4 
sudo make install
 
 
关闭命令行后重新开一个命令行,然后运行 cmake --version, 就可以看到你的cmake已经更新到你要的版本。

斐讯路由器强制推送广告

网络安全李魔佛 发表了文章 • 2 个评论 • 351 次浏览 • 2017-08-05 21:58 • 来自相关话题

开始以为是个别网站弹窗,都是些今日头条的app之类的app应用推广。
后面方法,居然在我这个网站上都出现,于是上网一搜。 果然发现斐讯被扒的文章。
http://www.right.com.cn/forum/thread-227504-1-1.html
 
  查看全部
开始以为是个别网站弹窗,都是些今日头条的app之类的app应用推广。
后面方法,居然在我这个网站上都出现,于是上网一搜。 果然发现斐讯被扒的文章。
http://www.right.com.cn/forum/thread-227504-1-1.html
 
 

在uefi主板上安装ubuntu,grub一直无法写入

Linux李魔佛 发表了文章 • 0 个评论 • 208 次浏览 • 2017-08-05 19:57 • 来自相关话题

主板是技嘉P61的板子,是一块uefi的主板。
因为要安装ubuntu,所以使用ultraISO烧录的启动u盘,然后u盘启动。 
重启后,顺利进入安装界面,一路下去后。 最后卡在 grub安装出错的界面处。
 
因为用的是最新的ubuntu16.04,所以开始以为是系统兼容性问题,所以就降级到12.04。 用ultraISO重新烧录可启动U盘。
 
结果问题依然存在,所以排除系统问题,因为以前在其他机子上装过很多次12.04了。
 
于是到ubuntu官网上搜了一下,发现这个很多人遇到问题。
 
解决方案无非有2个,一个是禁用uefi模式,一个是创建efi分区。
 
然后自己自己折腾自己的bios设置。 技嘉的板子没有直接禁用uefi的选项,百度之。 原来一部分主板bios的uefi的设置选项,是CSM, 这个选项默认是开启的了,然后把个功能关闭, 然后重新安装,问题还是出现。
 
而此之后,启动设备的优先级里面,一直会出现一个ubuntu的选项。 
重置bios设置,这个选项会一直都在。 
 
然后无解,只能用第二种方法。 启动uefi,在安装ubuntu过程中,分区选项里面,选择手工分区,分了以下分区:
/
/boot
/home
swap
/efi  (一定要这个分区)
 
划分上面分区,系统不再出现grub安装失败的错误。 可是,系统重启后,系统就会挂掉,很不稳定。
 
后来重试了几次,没办法,重试第一次的方法。 这一次,我把主板的电池扣掉,放电几分钟。 然后进bios,重新禁用CSM, 重装。 使用默认的分区方法, 然后重要成功了。
 
  查看全部
主板是技嘉P61的板子,是一块uefi的主板。
因为要安装ubuntu,所以使用ultraISO烧录的启动u盘,然后u盘启动。 
重启后,顺利进入安装界面,一路下去后。 最后卡在 grub安装出错的界面处。
 
因为用的是最新的ubuntu16.04,所以开始以为是系统兼容性问题,所以就降级到12.04。 用ultraISO重新烧录可启动U盘。
 
结果问题依然存在,所以排除系统问题,因为以前在其他机子上装过很多次12.04了。
 
于是到ubuntu官网上搜了一下,发现这个很多人遇到问题。
 
解决方案无非有2个,一个是禁用uefi模式,一个是创建efi分区。
 
然后自己自己折腾自己的bios设置。 技嘉的板子没有直接禁用uefi的选项,百度之。 原来一部分主板bios的uefi的设置选项,是CSM, 这个选项默认是开启的了,然后把个功能关闭, 然后重新安装,问题还是出现。
 
而此之后,启动设备的优先级里面,一直会出现一个ubuntu的选项。 
重置bios设置,这个选项会一直都在。 
 
然后无解,只能用第二种方法。 启动uefi,在安装ubuntu过程中,分区选项里面,选择手工分区,分了以下分区:
/
/boot
/home
swap
/efi  (一定要这个分区)
 
划分上面分区,系统不再出现grub安装失败的错误。 可是,系统重启后,系统就会挂掉,很不稳定。
 
后来重试了几次,没办法,重试第一次的方法。 这一次,我把主板的电池扣掉,放电几分钟。 然后进bios,重新禁用CSM, 重装。 使用默认的分区方法, 然后重要成功了。
 
 

树莓派上安装redis-server 亲测

树莓派李魔佛 发表了文章 • 0 个评论 • 232 次浏览 • 2017-07-17 23:47 • 来自相关话题

采用的方法为到官网下载源码,然后在树莓派上编译。
 
1. 下载源码压缩包:
官方网址: https://redis.io/download
下载下来的格式为tar.gz
通过命令行解压: tar xvfz xxxxxx.tar.gz
 
2. 解压后进入 redis-4.0.0的目录,然后执行命令: make
 
3. 等待源码编译(树莓派上有点久), 见到这一行:Hint: It's a good idea to run 'make test' ;)
说明你安装成功了
 
4. 编译成功后, 记得运行命令 sudo src/redis-server
来启动redis server。
 
成功运行后的文字界面:
12718:C 17 Jul 23:09:24.447 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo

12718:C 17 Jul 23:09:24.448 # Redis version=4.0.0, bits=64, commit=00000000, modified=0, pid=12718, just started

12718:C 17 Jul 23:09:24.448 # Warning: no config file specified, using the default config. In order to specify a config file use src/redis-server /path/to/redis.conf

12718:M 17 Jul 23:09:24.450 * Increased maximum number of open files to 10032 (it was originally set to 256).

                _._                                                  

           _.-``__ ''-._                                             

      _.-``    `.  `_.  ''-._           Redis 4.0.0 (00000000/0) 64 bit

  .-`` .-```.  ```\/    _.,_ ''-._                                   

 (    '      ,       .-`  | `,    )     Running in standalone mode

 |`-._`-...-` __...-.``-._|'` _.-'|     Port: 6379

 |    `-._   `._    /     _.-'    |     PID: 12718

  `-._    `-._  `-./  _.-'    _.-'                                   

 |`-._`-._    `-.__.-'    _.-'_.-'|                                  

 |    `-._`-._        _.-'_.-'    |           http://redis.io        

  `-._    `-._`-.__.-'_.-'    _.-'                                   

 |`-._`-._    `-.__.-'    _.-'_.-'|                                  

 |    `-._`-._        _.-'_.-'    |                                  

  `-._    `-._`-.__.-'_.-'    _.-'                                   

      `-._    `-.__.-'    _.-'                                       

          `-._        _.-'                                           

              `-.__.-'                                               




12718:M 17 Jul 23:09:24.451 # Server initialized

12718:M 17 Jul 23:09:24.451 * Ready to accept connections 查看全部
采用的方法为到官网下载源码,然后在树莓派上编译。
 
1. 下载源码压缩包:
官方网址: https://redis.io/download
下载下来的格式为tar.gz
通过命令行解压: tar xvfz xxxxxx.tar.gz
 
2. 解压后进入 redis-4.0.0的目录,然后执行命令: make
 
3. 等待源码编译(树莓派上有点久), 见到这一行:Hint: It's a good idea to run 'make test' ;)
说明你安装成功了
 
4. 编译成功后, 记得运行命令 sudo src/redis-server
来启动redis server。
 
成功运行后的文字界面:
12718:C 17 Jul 23:09:24.447 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo

12718:C 17 Jul 23:09:24.448 # Redis version=4.0.0, bits=64, commit=00000000, modified=0, pid=12718, just started

12718:C 17 Jul 23:09:24.448 # Warning: no config file specified, using the default config. In order to specify a config file use src/redis-server /path/to/redis.conf

12718:M 17 Jul 23:09:24.450 * Increased maximum number of open files to 10032 (it was originally set to 256).

                _._                                                  

           _.-``__ ''-._                                             

      _.-``    `.  `_.  ''-._           Redis 4.0.0 (00000000/0) 64 bit

  .-`` .-```.  ```\/    _.,_ ''-._                                   

 (    '      ,       .-`  | `,    )     Running in standalone mode

 |`-._`-...-` __...-.``-._|'` _.-'|     Port: 6379

 |    `-._   `._    /     _.-'    |     PID: 12718

  `-._    `-._  `-./  _.-'    _.-'                                   

 |`-._`-._    `-.__.-'    _.-'_.-'|                                  

 |    `-._`-._        _.-'_.-'    |           http://redis.io        

  `-._    `-._`-.__.-'_.-'    _.-'                                   

 |`-._`-._    `-.__.-'    _.-'_.-'|                                  

 |    `-._`-._        _.-'_.-'    |                                  

  `-._    `-._`-.__.-'_.-'    _.-'                                   

      `-._    `-.__.-'    _.-'                                       

          `-._        _.-'                                           

              `-.__.-'                                               




12718:M 17 Jul 23:09:24.451 # Server initialized

12718:M 17 Jul 23:09:24.451 * Ready to accept connections

python matplotlib 中的plot legend的用法

python李魔佛 发表了文章 • 0 个评论 • 292 次浏览 • 2017-07-13 11:59 • 来自相关话题

官方有链接说明:https://matplotlib.org/users/legend_guide.html
不过对于大部分人来说,英文教程,加上上面的例子有点晦涩。
 
所以以个人的理解,简单地用代码介绍下。
 
import matplotlib.pyplot as plt
import numpy as np

x = np.arange(10)
print x
fig = plt.figure()
ax = plt.subplot(111)

for i in xrange(5):
#ax.plot(x, i * x, label='y=%dx' %i)
ax.plot(x, i * x, label='$y = %ix$' % i)

ax.legend()

plt.show()
 
运行上面的代码后,得到的结果是:
 





 
如果把那句legend() 的语句去掉,那么图形上的图例也就会消失了。
 
所以legend()的主要只用就是用于在图上标明一个图例,用于说明每条曲线的文字显示。 你也可以把图例控制在左边,右边,底下等等。
 
 
 
  查看全部
官方有链接说明:https://matplotlib.org/users/legend_guide.html
不过对于大部分人来说,英文教程,加上上面的例子有点晦涩。
 
所以以个人的理解,简单地用代码介绍下。
 
    import matplotlib.pyplot as plt
import numpy as np

x = np.arange(10)
print x
fig = plt.figure()
ax = plt.subplot(111)

for i in xrange(5):
#ax.plot(x, i * x, label='y=%dx' %i)
ax.plot(x, i * x, label='$y = %ix$' % i)

ax.legend()

plt.show()

 
运行上面的代码后,得到的结果是:
 

legend.PNG

 
如果把那句legend() 的语句去掉,那么图形上的图例也就会消失了。
 
所以legend()的主要只用就是用于在图上标明一个图例,用于说明每条曲线的文字显示。 你也可以把图例控制在左边,右边,底下等等。
 
 
 
 

为什么使用dataframe自带的plot函数绘图 没有输出图像?

python李魔佛 发表了文章 • 0 个评论 • 211 次浏览 • 2017-07-11 18:32 • 来自相关话题

比如:
df=pd.read_csv('LoanStats_2017Q1.csv',header=0)
print df.head(10)
print df.describe()

analysis_columns = ['issue_d','term','int_rate','emp_title','grade','home_ownership','verification_status','purpose','loan_amnt','total_pymnt','out_prncp','total_rec_int','total_rec_prncp','installment','annual_inc','dti','fico_range_low','fico_range_high','last_fico_range_low','last_fico_range_high','open_acc','loan_status','delinq_amnt','acc_now_delinq','tot_coll_amt']
deal_data = df.loc[:,analysis_columns]
print deal_data
deal_data.groupby('issue_d').agg({'loan_amnt':'sum'}).plot(kind="bar")
deal_data.groupby('issue_d').agg({'issue_d':'count'}).plot(kind = 'bar')
在pycharm中程序运行完了就直接退出,没有输出任何的图像。
 
然后看了下源码后,需要在后面手工添加一句 plt.show()
 
这样就能够正常显示图像了。 查看全部
比如:
    df=pd.read_csv('LoanStats_2017Q1.csv',header=0)
print df.head(10)
print df.describe()

analysis_columns = ['issue_d','term','int_rate','emp_title','grade','home_ownership','verification_status','purpose','loan_amnt','total_pymnt','out_prncp','total_rec_int','total_rec_prncp','installment','annual_inc','dti','fico_range_low','fico_range_high','last_fico_range_low','last_fico_range_high','open_acc','loan_status','delinq_amnt','acc_now_delinq','tot_coll_amt']
deal_data = df.loc[:,analysis_columns]
print deal_data
deal_data.groupby('issue_d').agg({'loan_amnt':'sum'}).plot(kind="bar")
deal_data.groupby('issue_d').agg({'issue_d':'count'}).plot(kind = 'bar')

在pycharm中程序运行完了就直接退出,没有输出任何的图像。
 
然后看了下源码后,需要在后面手工添加一句 plt.show()
 
这样就能够正常显示图像了。

numpy/dataframe 中cumsum 的用法

python李魔佛 发表了文章 • 0 个评论 • 224 次浏览 • 2017-07-11 17:54 • 来自相关话题

用途:cumsum                 样本值的累计和
 
例子:
 
x=np.arange(101)
y=x.cumsum()
print y
print len(y)
x为一个0到100的array, 那么对这个array进行cumsum操作后
y现在的值为:
 
[ 0 1 3 6 10 15 21 28 36 45 55 66 78 91 105
120 136 153 171 190 210 231 253 276 300 325 351 378 406 435
465 496 528 561 595 630 666 703 741 780 820 861 903 946 990
1035 1081 1128 1176 1225 1275 1326 1378 1431 1485 1540 1596 1653 1711 1770
1830 1891 1953 2016 2080 2145 2211 2278 2346 2415 2485 2556 2628 2701 2775
2850 2926 3003 3081 3160 3240 3321 3403 3486 3570 3655 3741 3828 3916 4005
4095 4186 4278 4371 4465 4560 4656 4753 4851 4950 5050]
 
从结果很明显看到 cumsum是将样本逐渐累加,第一个是0,第二个是0+1,第三个是0+1+2,所以第三个是3,第4个是0+1+2+3=6,如此类推,最后一个就是这101个数的累加和,5050
 
  查看全部
用途:cumsum                 样本值的累计和
 
例子:
 
    x=np.arange(101)
y=x.cumsum()
print y
print len(y)

x为一个0到100的array, 那么对这个array进行cumsum操作后
y现在的值为:
 
[   0    1    3    6   10   15   21   28   36   45   55   66   78   91  105
120 136 153 171 190 210 231 253 276 300 325 351 378 406 435
465 496 528 561 595 630 666 703 741 780 820 861 903 946 990
1035 1081 1128 1176 1225 1275 1326 1378 1431 1485 1540 1596 1653 1711 1770
1830 1891 1953 2016 2080 2145 2211 2278 2346 2415 2485 2556 2628 2701 2775
2850 2926 3003 3081 3160 3240 3321 3403 3486 3570 3655 3741 3828 3916 4005
4095 4186 4278 4371 4465 4560 4656 4753 4851 4950 5050]

 
从结果很明显看到 cumsum是将样本逐渐累加,第一个是0,第二个是0+1,第三个是0+1+2,所以第三个是3,第4个是0+1+2+3=6,如此类推,最后一个就是这101个数的累加和,5050