PYTHON基础

基本操作
1、查看数据类型:type(a)
2、查看已安装的包:
在dos命令行界面:如果你使用的是pip来作为你的python包管理器的话,可以在命令行下直接运行$ pip freeze或者$ pip list来查看安装包的信息,当然其它的包管理器也有类似的功能,同时,你也可以在python交互式解释器中导入pip模块来查看包信息。
在python提示符下,用help(‘modules’),可以显示所有包名称,用import sys as s >> s.modules.keys() ,可以显示系统模块;
3、在LINUX环境下安装anaconda:https://blog.csdn.net/wyf2017/article/details/118676765?spm=1001.2101.3001.6650.2&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-2.pc_relevant_default&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-2.pc_relevant_default&utm_relevant_index=5
1)先找需要安装版本的官网地址链接,如https://repo.anaconda.com/archive/Anaconda3-5.3.0-Linux-x86_64.sh;
2)在linux控制台输入:wget https://repo.anaconda.com/archive/Anaconda3-5.3.0-Linux-x86_64.sh
3)先赋权在安装程序:chmod +x 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:https://blog.csdn.net/darendu/article/details/89874564?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522164517585116780265466903%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=164517585116780265466903&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2blogbaidu_landing_v2~default-3-89874564.nonecase&utm_term=linux%E7%8E%AF%E5%A2%83%E4%B8%8B%E5%AE%89%E8%A3%85mysql&spm=1018.2226.3001.4450
1)先找安装包网址链接:从官网或者网盘下载
2)用linux命令将安装包下载到指定文件夹下:wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.25-linux-glibc2.12-x86_64.tar.gz
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.density>100, [‘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也可以);
ts + pd.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: http://www.lfd.uci.edu/~gohlke/pythonlibs/#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版本,重新下载后,再安装,进入正常流程中。但是又报如下错误: 在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

归去来?

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值