
Python
文章平均质量分 69
苏小败在路上
不一样的人生
展开
-
Python-Pandas之日期分组(将日期按照设定的组分为不同类型)
生成一个df:import pandas as pdimport randomfrom datetime import datetime, timedeltas_date = datetime(2020, 4, 1)e_date = datetime(2020, 4, 30)dates = pd.date_range(s_date, e_date)names = [''.join(random.sample('abcdefghijklmnopqrstuvwxyz', 5)) for i原创 2020-05-15 10:41:18 · 14332 阅读 · 0 评论 -
Python-Pandas之Dataframe进行groupby之后重命名方法
在正常情况,我们是这样做分组统计的:dft = train_data.groupby('AdID').agg({'AdDate': ['nunique', 'unique']})得到的结果是这样的:列变成多行了,其实有两个方法可以设置:第一种,是重新命名列名:最简单直接的方式:dft.columns = pd.Series(['Count', 'List'])结果是这样的:已经改好了,直截了当,但是呢,如果列数比较多就比较麻烦了,你还要一个个对应。第二.原创 2020-05-11 18:17:52 · 21680 阅读 · 2 评论 -
Python-Pandas之两个日期数据求差(天数差、秒数差等)
在数据帧里面,经常碰到要计算两个时间格式列的天数差,比如用户的活跃天数,我们肯定是用最近登录日期减去用户的下载日期,但是要怎么做呢?其实很简单,pandas的dataframe是可以直接用列相减的,当然是时间类型和数值类型的才行。数值类型加减乘除不用多说了,基本和数值的加减乘除是一样的。无非就是要对除的列要做一下 replace(np.inf, 0) 处理,这个是防止出现除零的情况,一般是用0...原创 2020-04-22 16:56:09 · 26137 阅读 · 13 评论 -
Python-Pandas关于时间格式数据的保留位数操作
有时候,我们读取的数据中,有时间格式的数据,比如:2020-04-22T16:13:22.000000但是我们可能需要做分组处理,比如:df.groupby,按照日期或者小时做分组,那要怎么做呢?可以这样:df.groupby(df['datetime'].dt.hour).agg({'userid': 'nunique'})上面就是把数据按照小时分组,统计每个小时的用户数量。...原创 2020-04-22 16:35:57 · 5414 阅读 · 0 评论 -
Python-Pandas将最新的数据更新到数据库
在做数据分析时,时常会用到 dataframe.to_sql 语句,把一些计算或分析好的数据加入到数据库中,一般的添加是很好操作的,直接设置一个参数即可:dataframe.to_sql( table_name, con=conn, if_exists='append', index=False)如果存在,就添加到后面去,但是如果我们数据中都是有唯一ke...原创 2020-04-22 16:09:45 · 10382 阅读 · 0 评论 -
Python-pathlib 库的 Path 用法
直接上代码:# 使用 pathlib 中的 Path,对于路径拼接,拆分等操作都能很好的支持test_path = Path('/Users/xxx/Desktop/project/data/')file_name = 'hello_game_LevelUp.csv'file_path = test_path/file_name # 直接使用斜杆拼接路径即可file_path_na...原创 2020-04-22 15:54:00 · 9741 阅读 · 1 评论 -
Python-Pandas之HDFStore读写的奇葩问题
这次往我一个老的HDF文件里面写新的数据,报了下面这个错:HDF5ExtError Traceback (most recent call last)~/anaconda3/lib/python3.6/site-packages/tables/node.py in __init__(self, parentnode, name, _...原创 2020-03-26 18:43:04 · 5838 阅读 · 0 评论 -
Python-Pandas之两个Dataframe的比较(四)
昨天在外网找到一个比较dataframe的好库,叫datacompy,它的优点有:1、可以把对比后的信息详情打印出来,比如列是否相等,行是否相等;2、在数据中如果有不相等列,那么就只比较相同的列;3、可以设置绝对差值和相对差值,比如我们比较有浮点数的数据时,设置下绝对差值为0.01,后面的一系列微小的值就忽略了;4、在数据报告中,每一列的数据类型、不相等数量、最大差值和空值都详细列...原创 2020-03-24 09:20:05 · 21845 阅读 · 5 评论 -
Python-Pandas之两个Dataframe的比较(三)
昨天使用了 hashlib 库,今天直接使用 Dataframe 自带的函数去比较两个 df一,使用 equals 函数对比:import sys, sqlite3, pandas as pdfiles = []try: files = [sys.argv[1], sys.argv[2]]except: print('命令行未检测到文件参数。')# 这个方式可以...原创 2020-03-20 18:09:32 · 17350 阅读 · 2 评论 -
Python-Pandas之两个Dataframe的比较(二)
今天找到一个好方法,可以直接比较两个df,这个方法包含在hashlib库里面,代码如下:import hashlib, sysfiles = []try: files = [sys.argv[1], sys.argv[2]]except: print('命令行未检测到文件参数。')# 这个方式可以通过命令行运行:# # python3 cmpfiles....原创 2020-03-19 09:10:03 · 6763 阅读 · 0 评论 -
Python-Pandas之DataFrame转字典
将DataFrame的某列数据取出来,然后转化成字典:import pandas as pddata = { 'name': ['zhangsan', 'lisi', 'wangwu', 'zhaoliu', 'qianqi', 'zhangsan'], 'age': [18, 19, 20, 21, 22, 23], 'city': ['beijing', 's...原创 2019-12-12 09:23:10 · 6026 阅读 · 0 评论 -
Notebook-远程访问
在需要远程访问的机器上打开命令行或终端运行下面的命令:jupyter notebook --no-browser --port=8889然后会打印出下面一些信息:这里带了一个 token,后面会用到接下来,在其他机器上启动一个命令行或终端,然后输入下面的命令:ssh -N -L localhost:8889:192.168.1.50:8889这个前面的localhost...原创 2019-11-27 09:23:02 · 959 阅读 · 0 评论 -
Dash-Python-Pandas 随记
1、使用Scatter图时,hoveron 属性的作用是鼠标放在线或者点上是否显示相关内容,points:表示鼠标停在点上会显示点的信息,fills:表示鼠标停在线上显示线的名称,points+fills:表示两者都显示,默认是points;2、生成图标的 Figure 时,Layout 的 hovermode 属性的作用是当鼠标悬停时以什么为标准去显示内容,x:表示以x轴的刻度显示悬浮内容,...原创 2019-10-12 16:59:38 · 902 阅读 · 0 评论 -
Dash-在一个图中两条数据共用x轴并且两条数据使用左右两边的不同y轴
关于两条数据分别使用两变的y轴做标尺的方式fig = make_subplots(specs=[[{"secondary_y": True}]])# Add tracesfig.add_trace( go.Scatter(x=[1, 2, 3], y=[40, 50, 60], name="yaxis data"), secondary_y=False,)fi...原创 2019-10-12 16:44:05 · 887 阅读 · 0 评论 -
Dash-下载较大数据的csv
在上一篇实现了下载数据的功能,但是我在实际使用过程中,如果数据超过2M,在谷歌浏览器下面就下载失败,后面查了下原因,是因为有些浏览器限制的url的大小。数据URI限制数据URI规范未定义大小限制,但表示应用程序可以强加自己的大小。Chrome-2MB Firefox-无限制 IE≥9&Edge-4GB Safari和移动Safari-?那么数据大的要怎么做呢?只要在原来的基础上改...原创 2019-10-09 11:02:56 · 1019 阅读 · 0 评论 -
Dash-下载原始数据
Dashboard本来是做数据分析用的工具,但是如果想把数据下载下来,要怎么做呢?我去官网没有说明如何下载数据,后来在官方论坛上看到了解决方案:https://community.plot.ly/t/download-raw-data/4700在回帖里面,找 chriddyp 的总结,可以实现这个目标,下面是截图:这个是很早以前的库了,按照他原来的做法,提示我找不到urllib...原创 2019-10-08 16:40:30 · 623 阅读 · 0 评论 -
Dash-将可视化web面板同WSGI相结合(dash+wsgi,不再是调试模式)
在做Dash开发时,一般我们就简单的调用 app.run_server 就能启动服务器了,这个的好处是在更改了代码之后,浏览器也会跟着刷新页面,做起开发来就比较方便了。import dashimport dash_core_components as dccimport dash_html_components as htmlapp = dash.Dash(__name__)ser...原创 2019-09-02 15:40:43 · 1291 阅读 · 2 评论 -
Python-WSGI的简单尝试(Mac+Python3.7+VSCode)
环境: Mac + Python3.7 + VSCodeWSGI其实是一个借口,定义了服务器和客户端之间的标准通信格式,这样可以只要关注自己的html代码即可。from wsgiref.simple_server import make_serverdef application(environ, start_response): status = '200 OK' ...原创 2019-09-02 09:56:08 · 752 阅读 · 1 评论 -
Python-好用的网址记录
1、datetime格式化字符串时,用到的匹配符,比如‘%d’表示当月天数,‘%Y’表示年,其他的可以参考这里:https://www.cnblogs.com/fwl8888/p/9635505.html2、pandas的API,主要用到了Dataframe和Series:https://pandas.pydata.org/pandas-docs/stable/reference/ap...原创 2019-08-16 09:15:28 · 227 阅读 · 0 评论 -
Python-Pandas之Dataframe的比较记录
最近需要做dataframe之间的比较,看看两个df之间是否相同,百度之后,有一个好的方式,就是将df的值先转化成行向量,然后用向量比较,得到一个ndarray的数组,里面只有True和False,其中False,表示两个向量不同,我们只需要判断里面是否有False就可以知道是否完全相等。下面是代码:def compare_values(df1, df2): df1_r...原创 2019-08-19 13:52:13 · 7957 阅读 · 1 评论 -
Python-Pandas学习之HDFStore存储数据警告(your performance may suffer as PyTables will pickle....)
这是一个类似数据表字典的格式,可以将很多的数据帧(dataframe)保存在一个对象里面。每一个数据帧,都标有一个key,然后通过key来访问数据帧的数据。但是,在使用HDF的时候,如果不指定格式,那么我们数据中存在string类型的数据,就会报以下警告:PerformanceWarning: your performance may suffer as PyTables will...原创 2019-07-22 18:29:25 · 10364 阅读 · 2 评论 -
Python-基础知识学习之元组(tuple)
元组(tuple):这是一种长度固定、不可变的对象序列。表示方式:tup = 4,5,6print(tup)#会看到打印(4, 5, 6)元组还可以是包含元组的元组,比如:nested_tup = (4, 5, 6), (7, 8)print(nested_tup)#打印结果((4, 5, 6), (7, 8))在实际使用过程中,经常需要把数组转化成元组或者...原创 2019-06-26 12:03:02 · 801 阅读 · 0 评论 -
Python-基础知识学习之列表(list或者[])
列表:可以用 list 或者 [] 来表示,与元组不同,长度是可以变化的,每一项内容也可以修改。lista = [2,3,5] #定义了一个列表tup = ('foo', 'bar', 'baz')listb = list(tup) #通过元组创建一个列表print(listb)#打印['foo', 'bar', 'baz']#修改列表第二项listb[1] = 'pe...原创 2019-06-26 13:51:35 · 614 阅读 · 0 评论 -
Python-基础知识学习之内建序列函数(enumerate、sorted、zip、reversed)
1、enumerate经常用于遍历,可以对列表遍历之后得到一个带索引和值的元组,这样不需要外部再加参数去记录索引了:alist = [3, 2, 4, 6, 8, 9, 1]for tup in enumerate(alist): print(tup)#打印 (0, 3) (1, 2) (2, 4) (3, 6) (4, 8) (5, 9) (6, 1)#另一...原创 2019-06-26 14:34:34 · 350 阅读 · 0 评论 -
Python-基础知识学习之时间、日期(time、datetime)
要使用时间或者日期,需要导入两个模块:time 和 datetime具体操作写在代码中:import timeimport datetime# 有关 time 的说明print(time.time()) #获取当前是时间戳,以 1970.1.1 00:00:00 以秒计算的偏移值print(time.localtime()) #获取当前的时间元组,共九个元素,年、月、日、时、分...原创 2019-07-01 17:45:12 · 361 阅读 · 0 评论 -
Python-基础知识学习之字符串匹配(string,format)
我知道的python三种字符串匹配方式:a = 'aaaa'print('hello %s world!' % a)print('hello {} world!'.format(a))print(f'''hello {a} world!''')#打印的结果都是一样的 hello aaaa world! hello aaaa world! hello aaa...原创 2019-07-01 17:48:05 · 379 阅读 · 0 评论 -
Python-基础知识学习之数据库连接、读取、写入、关闭(sqlite3)
import sqlite3 as sq3import pandas as pdconn = sq3.connect("thisadatabase.db") #连接数据库# def select2table(table):# sql = (# f'''# select id, name, age, sex # ...原创 2019-07-01 17:55:15 · 1479 阅读 · 0 评论 -
Python-基础知识学习之字典(dict)
字典是拥有灵活尺寸的键值对集合,键和值都是一个对象,每个键值对用逗号隔开,所有的键值对使用大括号括起来:adict = {} #定义一个空字典bdict = {'a': 'hello world', 'b': [1, 2, 3]}print(bdict)#打印 {'a': 'hello world', 'b': [1, 2, 3]}#插入一个新的键值对bdict['c...原创 2019-06-26 18:06:48 · 244 阅读 · 0 评论 -
Python-基础知识学习之集合
集合是一种无序且元素唯一的容器,它比较像一个字典,但是没有值,只有键。可以通过两种方式创建,一种是set函数,另一种是大括号语法创建:a = set([2, 2, 2, 1, 3, 3])print(a)#打印 {1, 2, 3}b = {2, 2, 2, 1, 3, 3}print(a)#打印 {1, 2, 3}#集合的操作可以分为:联合、交集、差集、...原创 2019-06-26 18:24:38 · 362 阅读 · 0 评论 -
Python-基础知识学习之文件、操作系统(open)
Python下读取文件很简单:f = open(path)f.read(10) #读取前十个字符f.tell() #告诉你当前的句柄在哪个位置f.seek(2) #将句柄跳到指定位置f.close() #在文件操作完成之后,一定要记得关闭文件f.readlines(5) #按行读取文件内容f.write('string') #写入一个字符串到文件中f.writel...原创 2019-06-27 14:27:28 · 212 阅读 · 0 评论 -
Python-Pandas学习之序列(Series)
Pandas是Python的一个库,专门用于处理数据的库,里面提供了很强大的数据处理工具,可以使用下面命令安装这个库:$ pip install pandasSeries是一种一维的数组对象,包含了一个值序列和数据标签,也就是索引(index),下面是一种最简单的序列:import pandas as pd #引用pandas模块obj = pd.Series([1, 2...原创 2019-06-27 15:18:02 · 2156 阅读 · 0 评论 -
Python-Pandas学习之数据帧(Dataframe)
数据帧(Dataframe)是一个矩阵样式的数据表,包含已排序的列集合,每一列可以是不同的值类型(数值、字符串、布尔值等)数据帧既有行索引也有列索引,它被视为一个共享相同索引的Series字典。下面是创建数据帧的方法,以及一些基本操作:import pandas as pddata = { 'platform': ['qq', 'weixin', 'weibo', 'ta...原创 2019-06-27 16:28:32 · 3929 阅读 · 0 评论 -
Python-基础知识学习之函数、匿名函数(function,lambda)
函数同其他语言一样,是一段可以重复使用的代码片段,不过在Python中,函数的功能和c和c++等传统语言还是有很大的不同,它更加灵活对边,使用起来也方便很多。函数的声明使用关键字def + 函数名(参数1,参数2,关键字参数1),返回使用return,如果不写return,默认会返回一个none,下面是一个函数的定义:def func1(x, y, z=1.5): if z &g...原创 2019-06-27 12:05:36 · 638 阅读 · 0 评论 -
Python-基础知识学习之生成器(yield、generator、itertools)
生成器是构造新的可遍历对象的一种简洁的方式,普通的函数,在执行一次之后并返回单个结果,而生成器会返回一个多结果序列,在每一个元素产生之后暂停,知道下一个请求。创建生成器只需要把关键词换成yield关键字:def squares(n=10): print('Generating squares from 1 to {0}'.format(n ** 2)) for i in ...原创 2019-06-27 13:43:52 · 369 阅读 · 0 评论 -
Python-基础知识学习之错误和异常处理
看下面代码:#简单的方式def toFloat(x): try: return float(x) except: return x#带类型的方式def toFloat(x): try: return float(x) except ValueError: #这里可以带多个 except (TypeEr...原创 2019-06-27 13:56:06 · 218 阅读 · 0 评论 -
Python-Pandas的Dataframe基本操作语句和 SQL 语句对比
SELECT,WHERE,DISTINCT,LIMITSQL写法:SELECT * FROM table_name --取出table中所有数据SELECT * FROM table_name limit 3 --取出table中的前3行数据SELECT * FROM table_name WHERE column_name = 'abc' --从table中...原创 2019-07-09 17:28:36 · 3100 阅读 · 0 评论 -
Python-datetime库中datetime与numpy库中datetime的转换
目前要用到pandas处理数据,在获取到日期时间的时候,默认是numpy.datetime64的。但是这个类型,是无法直接获取到年月日的,所以弄起来特别麻烦。所以,我们要把这个类型转换成 datetime库中的datetime!在网上找了转换的方式,大都是这样的:1、是直接使用 astype 转换import datetimeimport numpy as npdt ...原创 2019-07-16 13:19:39 · 2463 阅读 · 0 评论 -
Python-Pandas学习之将数据帧(Dataframe)的数据插入到数据中,并且只插入新的数据
在使用数据帧的过程中,我们经常会需要数据库写入操作,特别是大量的基础数据。在有的数据中,我们是需要设置主键或者唯一项的,那么这个时候,如果还是无脑的调用 to_sql,就会经常出现一个错误,说数据库的主键或唯一项冲突。这个时候,我们就需要对新数据做一下处理,需要先把和数据库中的数据重合的数据删除掉,才能插入新数据。思路就是,根据条件,将新数据中可能出现的情况,使用 read_sql 的...原创 2019-07-12 11:31:04 · 1250 阅读 · 0 评论 -
Python-Dash部署要点
我的环境是用的 Python3.7 + MacOS在做Dash仪表面板时,在开发阶段我们只能在本地部署,然后只能通过 localhost:8050去访问。但是我们在做完之后,可能需要部署到实际的网络上,这样其他人也可以访问。我这里使用的是Heroku+Gunicorn,这个可以免费使用,也可以根据需要升级自己的服务,网址:Heroku官网打开之后,注册一个账号,完成激活之后,还要下...原创 2019-06-13 18:40:27 · 8443 阅读 · 3 评论