python中重采样函数 python 重采样

df1.index与df.类别1、查看数据类型:type(a)
2、查看已安装的包:
在dos命令行界面:如果你使用的是pip来作为你的python包管理器的话,可以在命令行下直接运行$ pip freeze或者$ pip list来查看安装包的信息,当然其它的包管理器也有类似的功能 , 同时,你也可以在python交互式解释器中导入pip模块来查看包信息 。
在python提示符下 , 用help(‘modules’),可以显示所有包名称,用import sys as ss.modules.keys() ,可以显示系统模块;
3、在LINUX环境下安装anaconda:;utm_medium=distribute.pc_relevant.none-task-blog-2~default~CTRLIST~Rate-2.pc_relevant_defaultdepth_1-utm_source=distribute.pc_relevant.none-task-blog-2~default~CTRLIST~Rate-2.pc_relevant_defaultutm_relevant_index=5
1)先找需要安装版本的官网地址链接,如;
2)在linux控制台输入:wget
3)先赋权在安装程序:chmodx Anaconda3-5.3.0-Linux-x86_64.sh
./Anaconda3-5.3.0-Linux-x86_64.sh
4)一直按ENTER , 直到出现选择yes or no,输入yes;
5)继续按ENTER,直到出现选择yes,输入yes,添加环境变量;
6)若上面这一步没选择yes,会默认选择no,则需要自己到安装anaconda的路径下,设置环境变量:
export PATH=/home/anaconda3/bin:KaTeX parse error: Expected 'EOF', got '#' at position 36: …一句话注释掉: #? export PATH=/u…PATH
export PATH=/root/anaconda3/bin:$PATH
8)然后,保存更改:source ~/.bashrc
9)检测是否安装成功:
进入自己的文件夹目录下输入:anaconda -V conda -V
4、在linux环境下下载并安装mysql:…"}request_id=164517585116780265466903biz_id=0utm_medium=distribute.pc_search_result.none-task-blog-2blogbaidu_landing_v2~default-3-89874564.nonecaseutm_term=linux环境下安装mysqlspm=1018.2226.3001.4450
1)先找安装包网址链接:从官网或者网盘下载
2)用linux命令将安装包下载到指定文件夹下:wget
3)再安装到指定目录下:
cd 路径
解压:tar -zxvf mysql-5.7.25-linux-glibc2.12-x86_64.tar.gz
修改文件夹名称:mv mysql-5.7.25-linux-glibc2.12-x86_64 /mysql
2)新建data目录
命令:mkdir /mysql/data
3)新建mysql用户组及mysql用户
命令:groupadd mysql //新建用户组
命令:useradd mysql -g mysql //新建用户
4)将/usr/local/mysql的所有者及所属组改为mysql
chown -R mysql.mysql /usr/local/mysql
5)配置
命令:/usr/local/mysql/bin/mysql_install_db --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data
6)配置/etc/my.cnf
vim /etc/my.cnf
7)开启服务
命令:cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql //将mysql加入服务
命令:chkconfig mysql on //开机自动启动
命令:service mysql start //开启mysql服务
开启mysql服务报错,在这里插入图片描述
8)设置密码
命令:/usr/local/mysql/bin/mysql -u root -p //在my.cnf中配置了取消密码验证,此处密码任意输入
命令:use mysql; //操作mysql数据库
命令:update user set authentication_string=password(‘你的密码’) where user=‘root’; //修改密码
命令:flush privileges;
命令:exit; //退出
9)将/etc/my.cnf中的skip-grant-tables删除
10)如果是本机安装则到此步骤已经安装配置完成,如果是在虚拟机或者远程服务器上安装 , 则需要以下步骤
允许远程连接
命令:/usr/local/mysql/bin/mysql -u root -p //登录
命令:use mysql;
命令:update user set host=’%’ where user = ‘root’;
命令:flush privileges;
命令:exit;
Pandas
dataframe:
1、dataframe,如何查看一个DataFrame对象的所有索引 , 列名,以及DataFrame中具体的值?
有一个dataframe对象df1,查看索引使用使用df1.index,查看列名使用df1.columns,查看所有的值为df1.values 。
2、创建dataframe:
df1=pd.DataFrame(np.arange(16).reshape(4,4),
index = pd.date_range(‘20200101’, periods = 4),
columns=list(‘ABCD’))
3、使用df1.index返回的是一个索引 , 如果获取具体的值的话,需要使用df1.index.values转化为列表 。
4、根据列名取dataframe的数据
基本格式:dataframe[列名]
1)取多列
列名要用中括号括起来 , 所以下述命令
dataframe[[‘P4_profit_rate’,‘P3PS’,‘P3NS’]] 没问题,返回pandas.core.frame.DataFrame类型的值
dataframe[‘P4_profit_rate’,‘P3PS’,‘P3NS’]出错
2)取一列
列名可以不用中括号括起来,
dataframe[‘P4_profit_rate’] 没问题 , 返回pandas.core.series.Series类型的值
列名也可以用中括号括起来,
dataframe[[‘P4_profit_rate’]] 也能正常运行,但返回pandas.core.frame.DataFrame类型的值
1. 常用基本方法及属性
df.info() 输出总行数、各列的行数、类型、索引、占用内存等信息;
df.index 输出索引,为 pandas.core.indexes.range.RangeIndex 类型;
df.columns 输出列名,为pandas.core.indexes.base.Index 类型,可使用df.columns.str ;
df.dtypes 各列的类型 , 输出一个series,值是object类型;
df.values 值,输出一个 array ;
df.describe() 输出各数值列的统计值,如非空个数、均值、std、极值、分位数 。
2. 索引
df.set_index() 设置索引,括号内可以填入DataFrame中某列的列名,就能使用此列作为索引;
df.loc[ ] 以label索引,可实现花哨的混合索引 , 如:df.loc[ df.density100, [‘pop’, ‘density’] ] ;
df.iloc[ ] 以绝对位置索引 , 即数字;
掩码操作,如 df[ df [‘density’]100 ]。
3. 计算:
df.cov() 协方差,df.corr() 相关系数,df.mean(axis = 1) , df.median(),df.max();
df[ ‘Age’ ].value_counts(ascending = True, bins = 5) 非nan计数(升序排列,分箱);
pd.cut()也能实现连续值离散化,pandas.cut(x,bins,right=True,labels=None,retbins=False,precision=3,include_lowest=False) 。
4. 增删改查、合并、排序
使用df.copy()防止误修改df;
df.rename(index = {‘a’ : ‘A’}, inplace = True) 重命名索引,注意需要inplace为True才能真正修改;
df.append(df2) 增加;
df.drop([‘a’, ‘b’], inplace = True) 删除;
data.drop_duplicates()去重,subset参数可以选择具体的列;
df3 = pd.concat([df1,df2], axis = 0) 实现两个DataFrame的简易合并;
pd.merge(on, left_on, right_on, left_index, right_index, how, suffixes) 数据表连接操作,on可以指定多个列作为键;
多列排序 data.sort_values(by=[‘group’,‘data’],ascending = [False,True],inplace=True),即在by、ascending处传入list,会先按’group’列再按’data’列排序 。
5. groupby聚合 和数据透视表pivot_table(相当于多维的groupby操作)
df.pivot_table(index = ‘Sex’, columns=‘Pclass’, values=‘Fare’ , aggfunc = ‘sum’) ,aggfunc默认是mean;
6. 时间序列
Pandas所有关于日期与时间的处理方法全部是通过Timestamp对象实现的;
pd.to_datetime(‘2017-11-24’) 把str转化为Timestamp对象(pd.Timestamp也可以);
tspd.Timedelta(‘5 days’) 用Timedelta加上时间间隔;
pd.read_csv()方法中参数parse_dates = True , 可以直接将数据中的时间作为索引;
将时间戳作为索引值取出对应时间段内的数据:data[pd.Timestamp(‘2012-01-01 09:00’):pd.Timestamp(‘2012-01-01 19:00’)],
同时也可以使用 data[‘2013’],data[‘2012-01’:‘2012-03’] 等简便方式;
仅取1月份的数据 data[data.index.month == 1] ;
时间重采样,将原始数据转化为均匀间隔的数据,
DataFrame.resample(rule, how=None, axis=0, fill_method=None, closed=None, label=None, convention=‘start’,kind
=None, loffset=None, limit=None, base=0),如df.resample(‘3D’)方法,对3天的数据进行重采样 。
7. apply自定义函数 DataFrame.apply(func, axis=0, broadcast=False, raw=False, reduce=None, args=(), kwds),说明:
允许传入0个或任意个参数,这些可变参数在函数调用时自动组装为一个tuple,
关键字参数允许传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict 。
8.缺失值:DataFrame.isnull().any() , .fillna() 等 。
9.字符串Series.str.lower(),str是Series的一个属性,s.str.upper(),s.str.len() , index.str.strip(),df.columns.str.replace(’ ‘,’‘),s.str.split(’‘) , s.str.contains(‘Ag’),s.str.get_dummies(sep = ‘|’)。
10、notebook显示设置:
pd.set_option(),pd.get_option()用于使用Notebook做展示;
pd.set_option(‘display.max_columns’,30) , pd.set_option(‘display.max_colwidth’,100),
pd.set_option(‘display.max_colwidth’,100) 。
11、重复记录处理
1)生成重复记录
#生成重复数据
df=pd.DataFrame(np.ones([5,2]),columns=[‘col1’,‘col2’])
df[‘col3’]=[‘a’,‘b’,‘a’,‘c’,‘d’]
df[‘col4’]=[3,2,3,2,2]
df=df.reindex(columns=[‘col3’,‘col4’,‘col1’,‘col2’]) #将新增的一列排在第一列
2)判断重复记录
isDplicated=df.duplicated() #判断重复数据记录
3)删除重复值
new_df1=df.drop_duplicates() #删除数据记录中所有列值相同的记录
new_df2=df.drop_duplicates([‘col3’]) #删除数据记录中col3列值相同的记录
new_df3=df.drop_duplicates([‘col4’]) #删除数据记录中col4列值相同的记录
new_df4=df.drop_duplicates([‘col3’,‘col4’]) #删除数据记录中(col3和col4)列值相同的记录
4)python去重drop_duplicates后一定要reset_index() 。
pandas.DataFrame.reset_index
函数作用:重置索引或其level 。
重置数据帧的索引 , 并使用默认索引 。如果数据帧具有多重索引,则此方法可以删除一个或多个level 。
函数主要有以下几个参数:reset_index(level=None, drop=False, inplace=False, col_level=0, col_fill=’')
各个参数介绍:
level:可以是int, str, tuple, or list, default None等类型 。作用是只从索引中删除给定级别 。默认情况下删除所有级别 。
drop:bool, default False 。不要尝试在数据帧列中插入索引 。这会将索引重置为默认的整数索引 。
inplace:bool, default False 。修改数据?。ú灰唇ㄐ露韵螅?。
col_level:int or str, default=0 。如果列有多个级别,则确定将标签插入到哪个级别 。默认情况下,它将插入到第一层 。
col_fill:object, default 。如果列有多个级别,则确定其他级别的命名方式 。如果没有,则复制索引名称 。
返回:
DataFrame or None 。具有新索引的数据?。?如果inplace=True , 则无索引 。
python使用问题集锦
1、报错:NameError: name ‘scipy’ is not defined
使用!pip install packages scipy,重新安装成功后,还报错;在运行前先from scipy import optimize , 再运行也报错;
还有说是注释或者换行等问题导致的,都无法解决,最后一个可能再试试:在安装scipy前要先安装numpy mkl(非numpy) 。
在如下地址下载安装numpy:
Numpy MKL is linked to the Intel? Math Kernel Library and includes required DLLs in the numpy.DLLs directory.
下载完成后,在cmd命令行中用pip install numpy-1.22.2 mkl-pp38-pypy38_pp73-win_amd64.whl进行安装,报错如下:
ERROR: numpy-1.22.2 mkl-pp38-pypy38_pp73-win_amd64.whl is not a supported wheel on this platform.
错误原因:安装的不是对应python版本的库,下载的库名中cp27代表python2.7,其它同理 。我的python是3.8版本,重新下载后,再安装,进入正常流程中 。但是又报如下错误: 在这里插入图片描述
文章知识点与官方知识档案匹配
Python入门技能树首页概览
208764 人正在系统学习中
点击阅读全文
打开CSDN APP,看更多技术内容
Pandas的基本功能_笑 瘾的博客_pandas作用
一、Pandas的常用32个方法和功能 DataFrame() 创建一个DataFrame对象 df.values 返回ndarray类型的对象 df.shape 返回行列数 df.index 获取行索引 df.set_index 设置索引 df.reset_index 重制索引 df.columns 获取列索引 df.rename 重...
继续访问
pandas教程:pandas主要功能详解_hello-java-maker的博客_pand...
df =pd.read_csv("Counts.csv", header=0) df.head() 1 2 选择/切片 df[‘column_name’] ,df[row_start_index, row_end_index] 选取指定整列数据 df['name'] # 选取一列,成一个series df[['name']] # 选取一列...
继续访问
numpy?1.21.4 mkl?pp38?pypy38_pp73?win_amd64.whl
numpy?1.21.4 mkl?pp38?pypy38_pp73?win_amd64.whl
Python数据分析 | (17) pandas的基本功能
本篇博客中 , 我将介绍操作Series和DataFrame中的数据的基本手段 。后续将更加深入地挖掘pandas在数据分析和处理方面的功能 。这不是pandas库 的详尽文档,主要关注的是最重要的功能 , 那些不大常用的内容(也就是那 些更深奥的内容)就交给你自己去摸索吧 。目录 1. 重新索引 2. 丢弃指定轴上的项 3. 索引、选取和过滤 4. 整数索引 5. 算术运算和数据对齐 6. ...
继续访问
最新发布 python安装ERROR: matplotlib-3.6.2-pp38-pypy38_pp73-win_amd64.whl is not a supported wheel on this plat
我把文件名称改为matplotlib-3.6.2-py39-none-any.whl 。2、看到支持的文件的名称是py30-none-any 。
继续访问
热门推荐 使用python经常出现NameError: name 'xxx' is not defined
使用python经常出现NameError: name ‘xxx’ is not defined感觉神之存在的Bug 用注释居然解决了 之前k_means一直是没定义后来加了注释#abc就解决了from sklearn.cluster import k_means# abc如下图所示:解决后感觉太特么奇妙了
继续访问
pandas中index索引功能是什么
pandas的索引对象可以用来保存坐标轴标签和其它元数据,是使用过程中必要的参与对象,那pandas中index索引功能是什么呢?pandas中index索引可以轻松的读取数据,更方便的数据查询 , 使用index查询的时候可以获得性能提升 。一、index索引特点 更方便的数据查询 , 使用index查询的时候可以获得性能提升; 自动的数据对齐功能; 更多更强大的数据结构支持 。二、index索引用途 1、使用index读取数据 import pandas as pd df = pd.read_csv("./.
继续访问
pandas 基础功能(二)
pandas 基础功能(二) 1.新增 2.删除 3.修改数据 1.新增 1)在最后新增一列(列S): df["列S]=list ## 增加列的元素个数要跟原数据列的个数一样 2)在指定位置新增一列(列Q): # 语法格式:列表.insert(index, obj) # index ---对象 obj 需要插入的索引位置 。# obj --- 要插入列表中的对象(列名) col_name=df1.columns.tolist() # 将数据框的列...
继续访问
【报错解决】复现Deep Supervised Cross-Modal Retrieval报错module scipy has no attribute spatial的解决
module scipy has no attribute spatial报错的解决 。
继续访问
Python函数调用出现NameError: name ‘xxx‘ is not defined的解决办法
原因: 函数里用的是局部变量,从而函数调用结束后会被销毁 。如果不声明是全局变量 , 那么就会报错:(注意灰色字体注释的地方) def load_data(): from keras.datasets import mnist # global train_image, train_lable , test_image, test_lable (train_image, train_lable), (test_image, test_lable) = mnist.load_data.
继续访问
Python使用pip安装报错:is not a supported wheel on this platform的解决方法
我的python是3.8 win64位 安装cryptography报错is not a supported wheel on this platform 首先我是在官网cryptography · PyPI下载的cryptography-37.0.2-pp38-pypy38_pp73-win_amd64.whl 官网如下,安装的时候报错cryptography · PyPI 解决版本:改安装报的名字 步骤一 , cmd里面输入pip debug --verbose,会列出支持包的名字 , 我把包的名字改
继续访问
Python-Pandas{数据结构与基本功能}
PandsSeries手动构建SeriesSeries的索引和切片按照字典的方式进行索引和切片 ??Pandas通常是用于数据分析过程中, 数据的清洗, 数据预处理, 数据的描述性分析等过程中 。在整个Python数据分析的生态环境中, Pandas的地位非常重要, 利用Pandas可以快速便捷的对数据进行各种各样的处理与操作. ??在Pandas中, 最重要的两种数据结构是1维的Series和2维的DataFrame. Series:一维数组,与Numpy中的一维array类似 。二者与Python基本的数
继续访问
Pandas 10. 索引index的用途
更方便的数据查询:df.loc[index, :]使用index会提升查询性能自动的数据对齐功能;使用index.更多更强大的数据结构支持 很多强大的索引数据结构Categoricallndex,基于分类数据的Index,提升性能;Multilndex,多维索引 , 用于groupby多维聚合后结果等;Datetimelndex,时间类型索引,强大的日期和时间的方法支持:
继续访问
Pandas的索引index的用途(十一)
1、Pandas的索引index的用途 把数据存储于普通的column列也能用于数据查询 , 那使用index有什么好处? index的用途总结: 1、更方便的数据查询; 2、使用index可以获得性能提升; 3、自动的数据对齐功能; 4、更多更强大的数据结构支持; 2、实例用途 (1)读取数据 import pandas as pd df = pd.read_csv...
继续访问
python语法基础
1.import 和 from … import 模块的变量、方法引用差异 from pandas import DataFrame from…import // 直接使用函数名使用就可以了 import pandas as pd import //模块.函数 a.import…as import:导入一个模块;注:相当于导入的是一个文件夹,是个相对路径 import A as B:给予工具库 A 一个简单的别称 B ,可以帮助记忆 。例:import torc...
继续访问
python数据分析学习(3)
python数据分析·numpy的一些函数
继续访问
Pandas详解三之Index对象
约定 import pandas as pd from pandas import DataFrame import numpy as np Index Index对象保存着索引标签数据,它可以快速找到标签对应的整数下标,其功能与Python的字典类似 。dict1={"Province":["Guangdong","Beijing","Qinghai","Fu...
继续访问
Pandas的索引index的用途
##Pandas的索引index的用途 '''把数据存储于普通的column列也能用于数据查询,那使用index有什么好处?index的用途总结: 1.更方便的数据查询; 2.使用index可以获得性能提升; 3.自动的数据对齐功能; 4.更多更强大的数据结构支持;''' import pandas as pd df =pd.read_csv('F:\\python387\\pandas\\antlearnpandasmaster\\datas\\ml_latest_small\\ratings.csv'.
继续访问
python创建python.py时遇到的问题 name is not defined
创建py文件之后 , 运行文件时报错: 是一个nameerror,说var为定义 , 所以执行不成功 。这是因为将var定义在了函数里面 , 即return后一行的代码缩进了,导致var没有定义成功,只需要去除缩进就可以了 。更改如下: ...
继续访问
pandas的Index对象
Index对象保存着索引标签数据,它可以快速找到标签对应的整数下标,其功能与Python的字典类似 。dict1={"Province":["Guangdong","Beijing","Qinghai","Fujiang"], "year":[2018]*4, "pop":[1.3,2.5,1.1,0.7]} df1=DataFrame(dict1) df1 1 2 3 4 5 代码结果 Province pop year 0 Guangdong 1.3...
继续访问 。
怎么使用Python中Pandas库Resample,实现重采样,完成线性插值#python中的pandas库主要有DataFrame和Series类(面向对象的的语言更愿意叫类) DataFrame也就是
#数据框(主要是借鉴R里面的data.frame),Series也就是序列,pandas底层是c写的 性能很棒,有大神
#做过测试处理亿级别的数据没问题,起性能可以跟同等配置的sas媲美
#DataFrame索引df.loc是标签选取操作,df.iloc是位置切片操作
print(df[['row_names','Rape']])
df['行标签']
df.loc[行标签,列标签]
print(df.loc[0:2,['Rape','Murder']])
df.iloc[行位置,列位置]
df.iloc[1,1]#选取第二行,第二列的值 , 返回的为单个值
df.iloc[0,2],:]#选取第一行及第三行的数据
df.iloc[0:2,:]#选取第一行到第三行(不包含)的数据
df.iloc[:,1]#选取所有记录的第一列的值,返回的为一个Series
df.iloc[1,:]#选取第一行数据,返回的为一个Series
print(df.ix[1,1])# 更广义的切片方式是使用.ix,它自动根据你给到的索引类型判断是使用位置还是标签进行切片
print(df.ix[0:2])
#DataFrame根据条件选取子集类似于sas里面if、where ,R里面的subset之类的函数
df[df.Murder13]
df[(df.Murder10)(df.Rape30)]
df[df.sex==u'男']
#重命名相当于sas里面的renameR软件中reshape包的中的rename
df.rename(columns={'A':'A_rename'})
df.rename(index={1:'other'})
#删除列相当于sas中的dropR软件中的test['col']-null
df.drop(['a','b'],axis=1)ordeldf[['a','b']]
#排序相当于sas里面的sortR软件里面的df[order(x),]
df.sort(columns='C')#行排序y轴上
df.sort(axis=1)#各个列之间位置排序x轴上
#数据描述相当于sas中proc menasR软件里面的summary
df.describe()
#生成新的一列跟R里面有点类似
df['new_columns']=df['columns']
df.insert(1,'new_columns',df['B'])#效率最高
df.join(Series(df['columns'],name='new_columns'))
#列上面的追加相当于sas中的appendR里面cbind()
df.append(df1,ignore_index=True)
pd.concat([df,df1],ignore_index=True)
#最经典的join跟sas和R里面的merge类似跟sql里面的各种join对照
merge()
#删除重行跟sas里面nodukeyR里面的which(!duplicated(df[])类似
df.drop_duplicated()
#获取最大值最小值的位置有点类似矩阵里面的方法
df.idxmin(axis=0 ) df.idxmax(axis=1)0和1有什么不同自己摸索去
#读取外部数据跟sas的procimportR里面的read.csv等类似
read_excel()read_csv()read_hdf5() 等
与之相反的是df.to_excel()df.to_ecv()
#缺失值处理个人觉得pandas中缺失值处理比sas和R方便多了
df.fillna(9999)#用9999填充
#链接数据库 不多说pandas里面主要用 MySQLdb
import MySQLdb
conn=MySQLdb.connect(host="localhost",user="root",passwd="",db="mysql",use_unicode=True,charset="utf8")
read_sql() #很经典
#写数据进数据库
df.to_sql('hbase_visit',con, flavor="mysql", if_exists='replace', index=False)
#groupby跟sas里面的中的byR软件中dplyr包中的group_bysql里面的group by功能是一样的 这里不多说
#求哑变量
dumiper=pd.get_dummies(df['key'])
df['key'].join(dumpier)
#透视表和交叉表跟sas里面的procfreq步类似R里面的aggrate和cast函数类似
pd.pivot_table()
pd.crosstab()
#聚合函数经常跟group by一起组合用
df.groupby('sex').agg({'height':['mean','sum'],'weight':['count','min']})
#数据查询过滤
test.query("0.2
将STK_ID中的值过滤出来
stk_list = ['600809','600141','600329']中的全部记录过滤出来,命令是:rpt[rpt['STK_ID'].isin(stk_list)].
将dataframe中,某列进行清洗的命令
删除换行符:misc['product_desc'] = misc['product_desc'].str.replace('\n', '')
删除字符串前后空格:df["Make"] = df["Make"].map(str.strip)
如果用模糊匹配的话 , 命令是:
rpt[rpt['STK_ID'].str.contains(r'^600[0-9]{3}$')]
对dataframe中元素 , 进行类型转换
df['2nd'] = df['2nd'].str.replace(',','').astype(int) df['CTR'] = df['CTR'].str.replace('%','').astype(np.float64)
#时间变换主要依赖于datemie和time两个包
#其他的一些技巧
df2[df2['A'].map(lambda x:x.startswith('61'))]#筛选出以61开头的数据
df2["Author"].str.replace(". ", "").head()#replace(". ", "")表示将字符串中以””开头;以””结束的任意子串替换为空字符串
commits = df2["Name"].head(15)
print commits.unique(), len(commits.unique())#获的NAME的不同个数 , 类似于sql里面count(distinct name)
#pandas中最核心 最经典的函数applymapapplymap
python分析奥巴马资金来源奥巴马python中重采样函数的竞选资金是一点点从选民那里募集来的 。如获党内提名,可得政府拔款python中重采样函数,但也没多少 。美国大选不仅禁外国人捐款,而且禁止公司机构捐款,而只允许个人捐款 。不仅如此,还为个人捐款限制了上限,防止富人捐过多的款而影响未来的公平执政 。
不仅富人自己不能多捐,如果某个老板呼吁自己的员工给某人捐钱或投票支持他,都是犯法的 。因此 , 想要筹到几千万竞争资金,唯一的办法是争取更多选民支持,一点点募集 。所以,中国、公司、大笔捐款,这三条都是犯法的 。
我记得以前已经有华人闹过这种丑闻了 。美国的选举法就是要严防少数人企图用几个臭钱影响美国的政治 。所以我们作为外国人就更别去自讨没趣了 。
导入包
In [1]:
import numpy as npimport pandas as pdfrom pandas import Series,DataFrame
方便大家操作 , 将月份和参选人以及所在政党进行定义
In [2]:
months = {'JAN' : 1, 'FEB' : 2, 'MAR' : 3, 'APR' : 4, 'MAY' : 5, 'JUN' : 6,'JUL' : 7, 'AUG' : 8, 'SEP' : 9, 'OCT': 10, 'NOV': 11, 'DEC' : 12}of_interest = ['Obama, Barack', 'Romney, Mitt', 'Santorum, Rick','Paul, Ron', 'Gingrich, Newt']parties = {'Bachmann, Michelle': 'Republican','Romney, Mitt': 'Republican','Obama, Barack': 'Democrat',"Roemer, Charles E. 'Buddy' III": 'Reform','Pawlenty, Timothy': 'Republican','Johnson, Gary Earl': 'Libertarian','Paul, Ron': 'Republican','Santorum, Rick': 'Republican','Cain, Herman': 'Republican','Gingrich, Newt': 'Republican','McCotter, Thaddeus G': 'Republican','Huntsman, Jon': 'Republican','Perry, Rick': 'Republican'}
读取文件
In [3]:
table = pd.read_csv('data/usa_election.txt')table.head()
C:\jupyter\lib\site-packages\IPython\core\interactiveshell.py:2785: DtypeWarning: Columns (6) have mixed types. Specify dtype option on import or set low_memory=False.interactivity=interactivity, compiler=compiler, result=result)
Out[3]:
cmte_id cand_id cand_nm contbr_nm contbr_city contbr_st contbr_zip contbr_employer contbr_occupation contb_receipt_amt contb_receipt_dt receipt_desc memo_cd memo_text form_tp file_num
0 C00410118 P20002978 Bachmann, Michelle HARVEY, WILLIAM MOBILE AL 3.6601e 08 RETIRED RETIRED 250.0 20-JUN-11 NaN NaN NaN SA17A 736166
1 C00410118 P20002978 Bachmann, Michelle HARVEY, WILLIAM MOBILE AL 3.6601e 08 RETIRED RETIRED 50.0 23-JUN-11 NaN NaN NaN SA17A 736166
2 C00410118 P20002978 Bachmann, Michelle SMITH, LANIER LANETT AL 3.68633e 08 INFORMATION REQUESTED INFORMATION REQUESTED 250.0 05-JUL-11 NaN NaN NaN SA17A 749073
3 C00410118 P20002978 Bachmann, Michelle BLEVINS, DARONDA PIGGOTT AR 7.24548e 08 NONE RETIRED 250.0 01-AUG-11 NaN NaN NaN SA17A 749073
4 C00410118 P20002978 Bachmann, Michelle WARDENBURG, HAROLD HOT SPRINGS NATION AR 7.19016e 08 NONE RETIRED 300.0 20-JUN-11 NaN NaN NaN SA17A 736166
In [8]:
#使用map函数 字典 , 新建一列各个候选人所在党派partytable['party'] = table['cand_nm'].map(parties)table.head()
Out[8]:
cmte_id cand_id cand_nm contbr_nm contbr_city contbr_st contbr_zip contbr_employer contbr_occupation contb_receipt_amt contb_receipt_dt receipt_desc memo_cd memo_text form_tp file_num party
0 C00410118 P20002978 Bachmann, Michelle HARVEY, WILLIAM MOBILE AL 3.6601e 08 RETIRED RETIRED 250.0 20-JUN-11 NaN NaN NaN SA17A 736166 Republican
1 C00410118 P20002978 Bachmann, Michelle HARVEY, WILLIAM MOBILE AL 3.6601e 08 RETIRED RETIRED 50.0 23-JUN-11 NaN NaN NaN SA17A 736166 Republican
2 C00410118 P20002978 Bachmann, Michelle SMITH, LANIER LANETT AL 3.68633e 08 INFORMATION REQUESTED INFORMATION REQUESTED 250.0 05-JUL-11 NaN NaN NaN SA17A 749073 Republican
3 C00410118 P20002978 Bachmann, Michelle BLEVINS, DARONDA PIGGOTT AR 7.24548e 08 NONE RETIRED 250.0 01-AUG-11 NaN NaN NaN SA17A 749073 Republican
4 C00410118 P20002978 Bachmann, Michelle WARDENBURG, HAROLD HOT SPRINGS NATION AR 7.19016e 08 NONE RETIRED 300.0 20-JUN-11 NaN NaN NaN SA17A 736166 Republican
In [10]:
#party这一列中有哪些元素table['party'].unique()
Out[10]:
array(['Republican', 'Democrat', 'Reform', 'Libertarian'], dtype=object)
In [ ]:
#使用value_counts()函数,统计party列中各个元素出现次数,value_counts()是Series中的,无参 , 返回一个带有每个元素出现次数的Series
In [11]:
table['party'].value_counts()
Out[11]:
Democrat292400Republican237575Reform5364Libertarian702Name: party, dtype: int64
In [12]:
#使用groupby()函数,查看各个党派收到的政治献金总数contb_receipt_amttable.groupby(by='party')['contb_receipt_amt'].sum()
Out[12]:
partyDemocrat8.105758e 07Libertarian4.132769e 05Reform3.390338e 05Republican1.192255e 08Name: contb_receipt_amt, dtype: float64
In [13]:
#查看具体每天各个党派收到的政治献金总数contb_receipt_amt。使用groupby([多个分组参数])table.groupby(by=['party','contb_receipt_dt'])['contb_receipt_amt'].sum()
Out[13]:
partycontb_receipt_dtDemocrat01-AUG-11175281.0001-DEC-11651532.8201-JAN-1258098.8001-JUL-11165961.0001-JUN-11145459.0001-MAY-1182644.0001-NOV-11122529.8701-OCT-11148977.0001-SEP-11403297.6202-AUG-11164510.1102-DEC-11216056.9602-JAN-1289743.6002-JUL-1117105.0002-JUN-11422453.0002-MAY-11396675.0002-NOV-11147183.8102-OCT-1162605.6202-SEP-11137948.4103-AUG-11147053.0203-DEC-1181304.0203-JAN-1287406.9703-JUL-115982.0003-JUN-11320176.2003-MAY-11261819.1103-NOV-11119304.5603-OCT-11363061.0203-SEP-1145598.0004-APR-11640235.1204-AUG-11598784.2304-DEC-1172795.10...Republican29-AUG-11941769.2329-DEC-11428501.4229-JAN-11750.0029-JAN-1275220.0229-JUL-11233423.3529-JUN-111340704.2929-MAR-1138875.0029-MAY-118363.2029-NOV-11407322.6429-OCT-1181924.0129-SEP-111612794.5230-APR-1143004.8030-AUG-11915548.5830-DEC-11492470.4530-JAN-12255204.8030-JUL-1112249.0430-JUN-112744932.6330-MAR-1150240.0030-MAY-1117803.6030-NOV-11809014.8330-OCT-1143913.1630-SEP-114886331.7631-AUG-111017735.0231-DEC-111094376.7231-JAN-116000.0031-JAN-12869890.4131-JUL-1112781.0231-MAR-1162475.0031-MAY-11301339.8031-OCT-11734601.83Name: contb_receipt_amt, Length: 1183, dtype: float64
In [14]:
def trasform_date(d):day,month,year = d.split('-')month = months[month]return "20" year '-' str(month) '-' day
In [17]:
#将表中日期格式转换为'yyyy-mm-dd' 。日期格式,通过函数加map方式进行转换table['contb_receipt_dt'] = table['contb_receipt_dt'].apply(trasform_date)
In [18]:
table.head()
Out[18]:
cmte_id cand_id cand_nm contbr_nm contbr_city contbr_st contbr_zip contbr_employer contbr_occupation contb_receipt_amt contb_receipt_dt receipt_desc memo_cd memo_text form_tp file_num party
0 C00410118 P20002978 Bachmann, Michelle HARVEY, WILLIAM MOBILE AL 3.6601e 08 RETIRED RETIRED 250.0 2011-6-20 NaN NaN NaN SA17A 736166 Republican
1 C00410118 P20002978 Bachmann, Michelle HARVEY, WILLIAM MOBILE AL 3.6601e 08 RETIRED RETIRED 50.0 2011-6-23 NaN NaN NaN SA17A 736166 Republican
2 C00410118 P20002978 Bachmann, Michelle SMITH, LANIER LANETT AL 3.68633e 08 INFORMATION REQUESTED INFORMATION REQUESTED 250.0 2011-7-05 NaN NaN NaN SA17A 749073 Republican
3 C00410118 P20002978 Bachmann, Michelle BLEVINS, DARONDA PIGGOTT AR 7.24548e 08 NONE RETIRED 250.0 2011-8-01 NaN NaN NaN SA17A 749073 Republican
4 C00410118 P20002978 Bachmann, Michelle WARDENBURG, HAROLD HOT SPRINGS NATION AR 7.19016e 08 NONE RETIRED 300.0 2011-6-20 NaN NaN NaN SA17A 736166 Republican
In [19]:
#查看老兵(捐献者职业)DISABLED VETERAN主要支持谁:查看老兵们捐赠给谁的钱最多table['contbr_occupation'] == 'DISABLED VETERAN'
Out[19]:
0False1False2False3False4False5False6False7False8False9False10False11False12False13False14False15False16False17False18False19False20False21False22False23False24False25False26False27False28False29False...536011False536012False536013False536014False536015False536016False536017False536018False536019False536020False536021False536022False536023False536024False536025False536026False536027False536028False536029False536030False536031False536032False536033False536034False536035False536036False536037False536038False536039False536040FalseName: contbr_occupation, Length: 536041, dtype: bool
In [21]:
old_bing_df = table.loc[table['contbr_occupation'] == 'DISABLED VETERAN']
In [22]:
old_bing_df.groupby(by='cand_nm')['contb_receipt_amt'].sum()
Out[22]:
cand_nmCain, Herman300.00Obama, Barack4205.00Paul, Ron2425.49Santorum, Rick250.00Name: contb_receipt_amt, dtype: float64
In [23]:
table['contb_receipt_amt'].max()
Out[23]:
1944042.43
In [24]:
#找出候选人的捐赠者中,捐赠金额最大的人的职业以及捐献额.通过query("查询条件来查找捐献人职业")table.query('contb_receipt_amt == 1944042.43')
Out[24]:
cmte_id cand_id cand_nm contbr_nm contbr_city contbr_st contbr_zip contbr_employer contbr_occupation contb_receipt_amt contb_receipt_dt receipt_desc memo_cd memo_text form_tp file_num party
176127 C00431445 P80003338 Obama, Barack OBAMA VICTORY FUND 2012 - UNITEMIZED CHICAGO IL 60680 NaN NaN 1944042.43 2011-12-31 NaN X * SA18 763233 Democrat
来源:
Python中repr()函数和str()的区别repr()和str,一个最简单的区别:repr是函数,str跟int一样是一种对象类型 。
repr(object)
返回对象的可打印形式字符串 。对于很多类型而言,本函数试图返回的字符串,会与将对象传给 eval() 所生成的结果相同;不然 , 结果就是一个尖括号包裹的字符串 , 包含了对象类型名称及其附加信息,附加信息通常包括对象的名称和内存地址 。通过定义 __repr__() 方法,类可以控制本函数将为实例返回的内容 。
classstr(object='')classstr(object=b'',encoding='utf-8',errors='strict')
返回object的 字符串 版本 。如果未提供object则返回空字符串 。在其他情况下 str() 的行为取决于encoding或errors是否有给出,具体见下 。
如果encoding或errors均未给出,str(object) 返回 object.__str__(),这是object的“非正式”或格式良好的字符串表示 。对于字符串对象,这是该字符串本身 。如果object没有 __str__() 方法 , 则 str() 将回退为返回 repr(object) 。
如果encoding或errors至少给出其中之一,则object应该是一个 bytes-like object (例如 bytes 或 bytearray) 。在此情况下,如果object是一个 bytes (或 bytearray) 对象 , 则 str(bytes, encoding, errors) 等价于 bytes.decode(encoding, errors) 。否则的话,会在调用 bytes.decode() 之前获取缓冲区对象下层的 bytes 对象 。请参阅 二进制序列类型 --- bytes, bytearray, memoryview 与 缓冲协议 了解有关缓冲区对象的信息 。
将一个 bytes 对象传入 str() 而不给出encoding或errors参数的操作属于第一种情况,将返回非正式的字符串表示(另请参阅 Python 的 -b 命令行选项) 。例如:
什么时候应该使用str(),什么时候应该使用repr()?
在为最终用户创建输出时 , 几乎总是使用str 。repr()主要用于调试和 探索。例如,如果您怀疑字符串中有非打印字符,或者浮点数有一个小的舍入错误,则repr()将显示给您;str可能不会 。repr()在生成要粘贴到源代码中的文字时也很有用 。
利用Python进行数据分析(9)-重采样resample和频率转换Python-for-data-重新采样和频率转换
重新采样指python中重采样函数的是将时间序列从一个频率转换到另一个频率python中重采样函数的过程 。
但是也并不是所有的采样方式都是属于上面的两种
pandas中使用resample方法来实现频率转换,下面是resample方法的参数详解python中重采样函数:
将数据聚合到一个规则的低频上,例如将时间转换为每个月 , "M"或者"BM",将数据分成一个月的时间间隔 。
每个间隔是半闭合的,一个数据只能属于一个时间间隔 。时间间隔的并集必须是整个时间帧
默认情况下,左箱体边界是包含的 。00:00的值是00:00到00:05间隔内的值
产生的时间序列按照每个箱体左边的时间戳被标记 。
传递span class="mark"label="right"/span可以使用右箱体边界标记时间序列
向loffset参数传递字符串或者日期偏置
在金融数据中,为每个数据桶计算4个值是常见的问题:
通过span class="girk"ohlc聚合函数/span能够得到四种聚合值列的DF数据
低频转到高频的时候会形成缺失值
ffill() :使用前面的值填充,limit 限制填充的次数
数据蛙-Python进阶这是漫长的一周,本周完成了Python的进阶模块,主要是pandas、numpy、matplotlib、seaborn、pyecharts这些模块的学习以及一个实际的案例:商品销售情况分析,之前一直觉得课程难度不够 , 但到这一周难度就大大提高了 。尤其是案例练习中的RFM模型和用户生命周期建立 , 看懂不难但是自己写一直出错 , 在不断出错不断尝试中知识得到了积累,另外可视化部分没有什么练习题 , 希望后面可以加上一些这方面的练习 , 接下来分模块来总结一下学习的内容 。
重新设置索引:df.set_index()
Series格式转换为DataFrame:df.to_frame()
文件读?。簆d.read_csv(filepath, header = 0,skiprows=[1,2])
使用位置做索引:df.loc[0]使用列表做索引:df.loc[[0,1,2]]
使用切片做索引:df.loc[0:4]使用bool类型索引:df[df['年龄']30]
loc 是基于索引值的,切片是左闭右闭的
iloc 是基于位置的 , 切片是左闭右开的
修改列索引:df.rename(columns={'姓名':'name', '年龄':'age'},inplace=True)
替换一个值:df.replace({'name':{'小明':'xiaoming'}},inplace=True)
对数据进行排序:df.sort_values('age')
累加求和:df.cumsum(0)
删除列:del df['player']删除行:df.drop(labels=0) labels 是行列的名字
数据拼接:pd.concat([left,right],axis=1)
# 指定列进行关联 , 默认是 inner joinresult = pd.merge(left,right,on='key')
#多个关联条件:result = pd.merge(left, right, on=['key1', 'key2'])
#左连接:result = pd.merge(left, right, how='left', on=['key1', 'key2'])
# 列名不一样的关联:pd.merge(left,right,left_on = ['key1','key2'],right_on = ['key3','key4'])
#单个分组:groups = df.groupby('district')
# 作用多个聚合函数:groups.agg([np.mean,np.sum,np.std])
# 针对具体列聚合 groups.age.agg([np.mean,np.sum,np.std])
# 不同列不同聚合函数 groups.agg({"age":np.mean,"novip_buy_times":np.sum})
分组后该列值求和显示:groups['vip_buy_times'].transform('sum')
通常用于求占比:transform(lambda x: x /sum(x))
# 填充指定值:np.full([3,4],1)
# 起始为10,5为步长,30为结尾取不到:np.arange(10, 30, 5)
#随机矩阵:np.random.random((2,3))
# 平均划分:np.linspace( 0, 2*pi, 100 )
# 类型及转换:vector.astype('float')
# 多维变一维:matrix.ravel()
# 矩阵的扩展:a = np.arange(0, 40, 10)b = np.tile(a, (3, 5))# 行变成3倍,列变成5倍
# 水平拼接:np.hstack((a,b))竖直拼接:np.vstack((a,b))
# 竖直分割:np.hsplit(a,3)#水平分割:np.vsplit(a,3)
8. Select the data in rows [3, 4, 8] and in columns ['animal', 'age'].
A:df.loc[df.index[[3,4,8]],['animal','age']]
行采用位置 , 列采用普通索引,这里利用index函数将位置变化为具体的普通索引,再利用loc函数
19. The 'priority' column contains the values 'yes' and 'no'. Replace this column with a column of boolean values: 'yes' should be True and 'no' should be False
A1:df['priority'].replace(['yes','no'],[True,False],inplace=True) 用replace函数替换
A2:df['priority'] = df['priority'].map({'yes': True, 'no': False}) 用map函数替换
最大最小值的索引:df.idxmax、df.idxmin
找出最大最小的前N个数:nlargest()和nsmallest()
将原表分组 并设置分段区间 pd.cut(df['A'], np.arange(0, 101, 10))
resample函数 日期重采样:s.resample('M').mean()
TimeGrouper 重组:s.groupby(pd.TimeGrouper('4M')).idxmax()
split 分割函数:temp = df['From_To'].str.split('_', expand=True) True为DataFrame
两个DataFrame拼接用join:df = df.join(temp)
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False #用来正常显示负号
%matplotlib inline 直接显示
折线图:plt.plot(x,y,color = 'r')
柱状图:plt.bar(x,y)plt.barh(x,y) 多个bar x设置不同 堆积图 bottom设置不同
散点图:plt.scatter(x, y, c=colors, alpha=0.5, s = area)
直方图:plt.hist(a,bins= 20) bin代表分隔的最小单位
plt.legend() 显示图例
for a,b in zip(X W[i],data[i]):
plt.text(a,b,"%.0f"% b,ha="center",va= "bottom") 添加数据标签
plt.annotate('注释文本',xy=(1, np.sin(1)),xytext=(2, 0.5), fontsize=16,arrowprops=dict(arrowstyle="-")) 添加注释文本
plt.xlabel("Group") x轴标题
plt.ylabel("Num") y轴标题
fig, axes = plt.subplots(nrows=2, ncols=2,facecolor='darkslategray')绘制多个图形
axes[0,0] axes[0,1] axes[1,0] axes[1,1]
pylab.rcParams['figure.figsize'] = (10, 6) # 调整图片大小
动态展示图表
from pyecharts.charts import Bar
from pyecharts import options as opts
** pyecharts 绘图的五个步骤:**
创建图形对象:bar = Bar()
添加绘图数据:bar.add_xaxis(["衬衫", "毛衣", "领带", "裤子", "风衣", "高跟鞋", "袜子"])
bar.add_yaxis("商家A", [114, 55, 27, 101, 125, 27, 105])
bar.add_yaxis("商家B", [57, 134, 137, 129, 145, 60, 49])
配置系列参数:对标签、线型等的一些设置
配置全局参数:bar.set_global_opts(title_opts=opts.TitleOpts(title="销售情况"))
渲染图片:生成本地 HTML 文件 bar.render("mycharts.html")bar.render()
notebook 渲染:bar.render_notebook()
bar = (Bar()
.add_xaxis(["衬衫", "毛衣", "领带", "裤子", "风衣", "高跟鞋", "袜子"])
.add_yaxis("商家A", [114, 55, 27, 101, 125, 27, 105])
.add_yaxis("商家B", [57, 134, 137, 129, 145, 60, 49])
.set_global_opts(title_opts=opts.TitleOpts(title="某商场销售情况"))
)
bar.render_notebook()
柱状图:Bar()
条形图:bar.reversal_axis() #翻转XY轴,将柱状图转换为条形图
折线图:from pyecharts.charts import Lineline=Line()
饼图:from pyecharts.charts import Page, PiePie()
转换日期类型:df['order_dt']=pd. to_datetime (df.order_dt,format="%Y%m%d")
将日期转换为月为单位:df['month']=df.order_dt.values. astype('datetime64[M]') 所有日期显示为当月第一天
去除日期单元值:order_diff/ np.timedelta64(1,'D')
过滤部分极值:grouped_user.sum() .query('order_products100') .order_amount
数据透视表:rfm=df.pivot_table( index ='user_id', values =['order_products','order_amount'], aggfunc ={'order_amount':'sum','order_products':'sum'})
map()方法是pandas.series.map()方法, 对DF中的元素级别的操作, 可以对df的某列或某多列
applymap(func)也是DF的属性, 对整个DF所有元素应用func操作
purchase_r=pivoted_counts.applymap(lambda x: 1 if x1 else np.NaN if x==0 else 0)
apply(func)是DF的属性, 对DF中的行数据或列数据应用func操作,也可用于Series
apply(lambda x:x.cumsum()/x.sum())累计占比
apply(lambda x:x/x.sum(),axis=0)每一列中每行数据占比
下周开始进入数据分析思维的课程,很期待后面的课程以及项目 , 加油!
【python中重采样函数 python 重采样】python中重采样函数的介绍就聊到这里吧,感谢你花时间阅读本站内容 , 更多关于python 重采样、python中重采样函数的信息别忘了在本站进行查找喔 。

    推荐阅读