数据处理方法小结

1.pandas 操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#模糊筛选
df[df['区域'].str.contains('四川')]
df[df['区域'].str.contains('四川|华东')]
#找到多个数值
df[df['区域'].isin(['四川','华东'])]
# iloc 和loc的区别
对于一个DataFrame A,A.loc[k]是读取A中index为k的那一行。A.iloc[k]是读取A中的第k行。
#去除重复数据
DataFrame.drop_duplicates()

#查看是否重复
DataFrame.duplicates()

#修改类型
df[[column]] = df[[column]].astype(type)
#索引上的合并,left_on为指定某行,right_index为指定索引
pd.merge(left1,right1,left_on='key',right_index=True)
#画图
dataframe.plot.bar

#排序
df.sort_value(by="区域",ascending=True)

2.mysql问题整理

mysql在windos系统下不区分大小写

在MySQL的配置文件中my.ini [mysqld] 中增加一行

lower_case_table_names = 1  

参数解释:0:区分大小写
1:不区分大小写

修改密码

1
2
3
4
5
6
7
mysql>use mysql;  
mysql>update user set authentication_string=password('新密码') where user='root';
保存
mysql> flush privileges;
mysql> quit;
重启
sudo service mysql restart

3.ubuntu相关

1
2
3
4
5
6
7
8
9
10
11
12
#功能:查看进程信息
ps -aux
#查看具体的某个进程
ps -aux | grep mysql
#功能:杀死进程
kill -9
#ubuntu 删除用户
userdel
# 命令强制删除用户名
userdel -f
# 查端口号情况
lsof -i:

ubuntu安装镜像地址

http://mirrors.aliyun.com/ubuntu-releases/

python2 python3版本切换

1
2
sudo update-alternatives --install /usr/bin/python python /usr/bin/python2 100
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 150

4.docker

docker hub 找镜像
docker pull 拉取images
docker tag 打标签

5.错误处理

5.1 报错
HTTPError: 404 Client Error: Not Found for url: http://mirrors.tencentyun.com/pypi/simple/pkg-resources/

解决方法:访问PyPI镜像源出了问题,将pip的默认的源地址改为国内源即可。具体操作如下:

vim ~/.pip/pip.conf打开pip配置文件: 写入

1
2
3
4
5
6
[global]  
index-url = http://e.pypi.python.org/simple
#或
#e.pypi.python.org
#pypi.douban.com
#pypi.hustunique.com

5.2报错
1
ImportError: No module named 'pycocotools'

处理:
1
2
3
4
#在Linux, 运行:
pip install git+https://github.com/waleedka/cocoapi.git#egg=pycocotools&subdirectory=PythonAPI
#在Windows, 运行:
pip install git+https://github.com/philferriere/cocoapi.git#egg=pycocotools^&subdirectory=PythonAPI

6.scipy数据分析

方差齐性检测

介绍:方差反映了一组数据与其平均值的偏离程度,方差齐性检验用以检验两组或多组数据与其均值偏离程度是否存在差异,也是很多检验和算法的先决条件。

1
2
3
4
5
6
7
8
from scipy import stats
import numpy as np

np.random.seed(12345678)
rvs1 = stats.norm.rvs(loc=5,scale=10,size=500)
rvs2 = stats.norm.rvs(loc=25,scale=9,size=500)
print(stats.levene(rvs1, rvs2))
# 运行结果:LeveneResult(statistic=1.6939963163060798, pvalue=0.19337536323599344)

分析:返回结果 p-value=0.19337536323599344, 比指定的显著水平(假设为5%)大,认为两组数据具有方差齐性。

斯皮尔曼等级相关系数

介绍:斯皮尔曼等级相关系数(Spearman’s correlation coefficient for ranked data ),它主要用于评价顺序变量间的线性相关关系,在计算过程中,只考虑变量值的顺序(rank, 秩或称等级),而不考虑变量值的大小。常用于计算类型变量的相关性。

1
2
3
4
5
6

from scipy import stats
import numpy as np

print(stats.spearmanr([1,2,3,4,5], [5,6,7,8,7]))
# 运行结果:SpearmanrResult(correlation=0.82078268166812329, pvalue=0.088587005313543812)

分析:返回结果的第一个值为相关系数表示线性相关程度,本例中correlation趋近于1表示正相关。第二个值为p-value,p-value越小,表示相关程度越显著

卡方检验

介绍:卡方检验是一种非参数检验方法。相对来说,非参数检验对数据分布的要求比较宽松,并且也不要求太大数据量。卡方检验是一种对计数资料的假设检验方法,主要是比较理论频数和实际频数的吻合程度。常用于特征选择,比如,检验男人和女人在是否患有高血压上有无区别,如果有区别,则说明性别与是否患有高血压有关,在后续分析时就需要把性别这个分类变量放入模型训练。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import numpy as np
import pandas as pd
from scipy.stats import chi2_contingency

np.random.seed(12345678)
data = np.random.randint(2, size=(40, 3)) # 2个分类,50个实例,3个特征
data = pd.DataFrame(data, columns=['A', 'B', 'C'])
contingency = pd.crosstab(data['A'], data['B']) # 建立列联表
print(chi2_contingency(contingency)) # 卡方检验
'''
运行结果:
(0.36556036556036503, 0.54543425102570975, 1,
array([[ 10.45, 8.55],
[ 11.55, 9.45]]))'''

分析:卡方检验函数的参数是列联表中的频数,返回结果第一个值为统计量值,第二个结果为p-value值,p-value=0.54543425102570975,比指定的显著水平(一般5%)大,不能拒绝原假设,即相关性不显著。第三个结果是自由度,第四个结果的数组是列联表的期望值分布。

6.小tips

pycharm 修改大小写
edit->toggle case
ctrl+shift+u

获取指定文件夹下所有文件
os.path(file_path)
os.listdir(file_path)