技术标签: pandas python基础 python 数据分析
python 数据分析学习笔记(二)
type(None) ##对象类型不可以参与运算
type(np.nan) #浮点型数据可以参与计算
在pandas中如果遇到None形式的空值,则pandas会自动转化成Nan形式
data=DataFrame(data=np.random.randint(1,100,size=(7,5)))
data.iloc[2,3]=None
data.iloc[3,4]=np.nan
data.iloc[5,2]=np.nan
data.iloc[6,1]=None
#isnull 结合any
#利用布尔索引,找到有空值的所有行
data.loc[data.isnull().any(axis=1)]
drop_index=data.loc[data.isnull().any(axis=1)].index
drop_index
#返回需要删除的行索引
Int64Index([2, 3, 5, 6], dtype='int64')
#删掉有空值的行
data.drop(labels=drop_index,axis=0)
#notnull 结合all
data=data.loc[data.notnull().all(axis=1)]
data.dropna(axis=0)
data.fillna(value=1) #使用指定值填充空值 使用意义不大
#对空值进行赋值,使用ffill(从前一行或列)或者bfill(从后一行或列),axis确定行列
data.fillna(method='ffill',axis=1)
import pandas as pd
import numpy as np
from pandas import DataFrame,Series
df1=DataFrame(data=np.random.randint(1,100,size=(5,3)),columns=['A','B','C'])
df2=DataFrame(data=np.random.randint(1,100,size=(5,3)),columns=['A','D','C'])
df=pd.concat((df1,df2),axis=0) #将df1与df2通过列进行连接
df=df1.append(df2) # # 只能是列连接
返回:
df3=DataFrame({
'成绩':['A','B','C'],'name':['张三','李四','王五']})
df4=DataFrame({
'科目':['F','B','D'],'name':['张三','李四','王五']})
#根据姓名列进行两个表格的合并
#on不写的话,就使用两个表格中共有的列名进行合并(可以存在多个)
df=pd.merge(df3,df4,on='name') #默认为内连接
df=pd.merge(df3,df4,on='name',how='left') #左连接
#how的参数有outer(取并集),inner(取交集),left,right
当两个表格的列索引名称不同时,可以采用left_on=‘col1’,right_on='col2’来确定合并列
** replace**
1.单值替换:
替换所有符合条件的元素,to_replace=‘替换前的值’,values=‘替换后的值’
按列指定单值替换:to_replace={col:‘替换前的值’},values=‘替换后的值’
2.多值替换:
列表替换:to_replace=[],values=[]
字典替换:to_replace={‘替换前的值1’:‘替换后的值1’,‘替换前的值2’,‘替换后的值2’}
创建一个映射关系列表,把values元素和一个特定的标签或者字符串绑定(给一个元素提供不同的表现形式)
dic={
'name':['张三','李四','王五'],
'salary':[10000,20000,30000]}
data=DataFrame(data=dic)
dic={
'张三':'tom',
'李四':'join',
'王五':'yangm'}
data['name2']=data['name'].map(dic)
map是Series的函数,只能由Series 调用
###给df中的每列元素加上100
df=DataFrame(data=np.random.randint(1,100,size=(5,3)))
def add_(values):
return values+100
df.apply(add_,axis=0)
df.applymap(add_)#没有axis的概念
df=DataFrame(data=np.random.randint(1,100,size=(5,3)),columns=('A','B','C'))
#取确定的1,2,4行数据
df.take(indices=[1,2,4],axis=0)
#取前三行数据随机排序,再对前三列数据随机打乱
df.take(indices=np.random.permutation(3),axis=0).take(indices=np.random.permutation(3),axis=1)
dic={
'部门':['IT','人力','财务','IT','人力'],
'姓名':['张三','李四','王五','陈六','丁一'],
'salary':[30000,56000,7900,8000,9000]}
df=DataFrame(dic)
#根据部门分组
df.groupby(by='部门').groups
#分组聚合,sum(),mean()
df.groupby(by='部门').mean() #会聚合所有能聚合的列,如果计算单一列,可做col限制
#agg用于将分组以后的结果做多种不同方式的聚合
df.groupby(by='部门')['salary'].agg(['min','max'])
#将计算的均值以新一列加入到原表中,可以使用映射
df['均值']=df['部门'].map(df.groupby(by='部门')['salary'].mean())
分组聚合的高级操作
def salary_new(s):
return s*1.1
df['new_s']=df.groupby(by='姓名')['salary'].apply(salary_new)
使用apply或者transform作为自定义函数的运算工具.
从mysql数据库提取数据
import pymysql
conn=pymysql.connect(host='172......2',user='c.....o',passwd='l......c',db='t...t',charset='utf8')
sql=pd.read_sql('select * from test.group_detail_wq',conn)
透视表:pivot_table:主要参数为index,values,columns,aggfunc
#对老师和群状态做'群总发言量','群成员人数','群活跃人数'的数据汇总,计算求和
sql.pivot_table(index=['老师','群状态'],values=['群总发言量','群成员人数','群活跃人数'],aggfunc=sum)
#交叉表,计算每个老师在每个群状态下的群活跃人数的和,没有的补0
sql.pivot_table(index=['群状态'],values=['群活跃人数'],columns=['老师'],aggfunc=sum,fill_value=0)
交叉表:crosstab(index,columns)
pd.crosstab(index=sql[‘群状态’],columns=sql[‘老师’])
使用匿名函数lambda
#将col2列根据"-"分列,取第一列
df['col1']=df['col2'].map(lambda x:x.split("-")[0])
问题还原:在js 中 使用var jsonArray=[];obj.test= $(item).attr("test");jsonArray.push(obj);jsonData=JSON.stringify(jsonArray);传入后端进行解析String jsonData = StringEscapeUtils.unescapeHtml(getRequest()....
在确保linux端samba配置ok, 而且win10可以ping同samba服务器主机ip时, 如果打开samba共享文件夹还是fail, 可以尝试执行如下操作1SMB1.0/CIFS协议默认被关闭了,之前的勒索病毒就是用的这个协议的漏洞,所以你去“启动和关闭windows功能”下手动勾选启用SMB1.0/CIFS协议2打开cmd, 管理员身份执行, 然后执行如下命令sc.exe co...
因为embedding的嵌入深度,每一个深度都相当于是一个特征,比如书写特征之类的,使用dropout放弃使用一些特征,使得一些本来对本模型无用的特征可以舍掉。另一方面,dropout最基本的作用,防止过拟合。...
以在数据化、智能化为特征的数字化转型是银行业的一次产业革命。以支付功能的在线化为例,近年来移动支付领域的“脱媒”给银行上了生动的一课,即使是全国性的大型银行,面对互联网公司的“降维”竞争也是无能为力,区域性银行更是全面失守。这种数字化金融服务对银行业的传统理念和服务模式,乃至市场生态和竞争格局均形成无可规避的颠覆性冲击,银行要具备哪些核心能力,如何提高运营管理效率等,都成...
转自:activity 与service 互相传值activity中 向service传值与ativity互相传值类似在activity中Intent regIntent = new Intent(this, ChatService.class);regIntent.putExtra(“student_id”,student_id);startService(regIntent);然...
1.下载anaconda安装文件,官网速度较慢,建议清华开源软件镜像站下载: https://mirrors.tuna.tsinghua.edu.cn/help/anaconda/ 2.用终端进入anaconda安装文件所在文件夹路径(cd xxx) 3. 在终端输入bash xxx(xxx为anaconda安装文件名 4. 不断按enter键是命令窗口显示的内容来到协议末尾,输入yes,然后
机器学习20_线性判别分析(LDA)详解(2021.07.07)一. 究极总结:投影后类内方差最小,类间方差最大。二. 知识理解LDA的思想非常朴素,给定训练样例集,设法将样例投影到一条直线上,使得同类样例的投影点尽可能接近、异类样例的投影点尽可能远离。在对新样本进行分类时,将其投影到同样的这条直线上,在根据投影点的位置来确定新样本的类别。如下图所示:在将所有的点通过降维的思想投影到直线上之后,实现了所谓的同类样例接近,异类样例远离的结果。如图中左边的理想情况,甚至可以找到一个法点以及它的法线
1.实现UIScrollViewDelegate开始滑动:- (void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView滑动过程:- (void)scrollViewDidScroll:(UIScrollView *)scrollView滑动结束:- (void)scrollViewDidEn
阿里巴巴高级数据库架构师黄欢欢在2017云栖大会苏州峰会上与大家分享了云上企业数据库架构之路。主要分享了构建企业级数据库架构包括异地多活、数据库容器化、混合云架构、计算存储分离和数据库与离线混布,其中包含X-DB、HDM等重要云产品。以下是精彩视频内容整理:做数据库架构需要满足三个基本需求。第一个问题是扩展,业务高速发展,单地资源容量受限;第二个问题是弹性,双十一对弹性扩展和收缩的需求;第
git 如何在本地同步远程分支和tag1.git如何同步本地分支与远程origin的分支问题场景:同事A创建了本地分支branchA并push到了远程->同事B在本地拉取(git fetch)了和远程branchA同步的本地分支branchA->同事A开发完成将远程分支branchA删除(远程仓库已经不存在分支branchA)->同事B用git fetch同步远端分支,gi...
YApi Mock功能远程代码执行漏洞复现漏洞描述API接口管理平台是国内某旅行网站的大前端技术中心开源项目,使用mock数据/脚本作为中间交互层,为前端后台开发与测试人员提供更优雅的接口管理服务,该系统被国内较多知名互联网企业所采用。 YApi 是高效、易用、功能强大的 api 管理平台。但因为大量用户使用 YAPI的默认配置并允许从外部网络访问 YApi服务,导致攻击者注册用户后,即可通过 Mock功能远程执行任意代码。影响版本YApi7月7日前版本,即版本<=1.92(后文有说明)环境
1、分配饼干455. Assign Cookies (Easy)题目描述:每个孩子都有一个满足度,每个饼干都有一个大小,只有饼干的大小大于等于一个孩子的满足度,该孩子才会获得满足。求解最多可以获得满足的孩子数量。Input: [1,2], [1,2,3] Output: 2思路:对饼干大小、孩子的满足度排序,尽最大可能满足更多的孩子;class Solution {publ...