ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

spyder数据分析

2021-07-05 21:32:29  阅读:221  来源: 互联网

标签:数据分析 df 列名 labels pandas dt 数据 spyder


一些注意事项

在字符串中为了区分转义符,可以在前面加个\ 或者在最前面加r;
字符串加好拼接;乘号重复;
索引【-1】代表最后一个;
endwith布尔值检查结尾;
startwirh检查开始;检查的可以是元组,里面多个元素;
find找位置;忽略大小写使用re.findall;
join拼接;
注意python和matab的很大区别是python索引是从0开始的!!!;
将列表中的值进行置空[]就相当于删除;
判断一个值在列表中用in;
判断多个值在列表中:

    set([2,10]) <= set(a);

集合set无序不重复,去除列表重复元素可以转换成集合再转换回来;
两个集合:
a-b差集
a|b并集;
a&b交集;
a^b不同时存在的元素

字典无序,list和tup不能当键;
del删除;
sorted按键排序;
dict构建字典;
生成序列的range只能是整数;
要生成带小数的使用np的arrange(起始值,终止值,步长 );

修改文件编码方式使用notepad++软件;

导入文本文件(csv)

file文件路径;
names列名,默认为文件中的第一行;
se分隔符,默认为空,表示默认导入为一列;
encoding设置文件编码,导入中文的时候需要设置为utf-8

    from pandas import read_table;
    read_table(file, names = [列名1,列名2,....], sep = "", encoding,...)
    from pandas import read_csv;
    read_csv(file, names = [列名1,列名2,....], sep = "", encoding,...)

导入Excel文件

filename文件路径
sheetname sheet的名字
names 列名,默认第一行作为列名

    read_excel(fileName, sheetname,header)

导出csv文件

filePath文件路径;
sep分隔符,默认逗号;
index是否导出行序号,默认导出;
header是否导出列名,默认导出;

    df.to_csv(filePath, sep="", index = TRUE, header = TRUE)

重复值处理

行相同的数据只保留一行
返回新的df

    df1 = df.drop_duplicates()

缺失值的处理

产生:

暂时无法获取
信息被遗漏

处理方式

数据补全;(平均值等等)
删除对应缺失行;(数据量少慎用)

    df.dropna()

不处理;

空格值处理

字符型数据前后有空格

    newname = df['name'].str.strip()
    df['name'] = newname

字段抽取

根据已知列数据的开始和结束位置,抽出新的列

    df['列名'] = df['列名'].astype(str) # 先转换成字符串形式
    df1= df['列名'].str.slice(start,stop)

字段拆分

按照固定的字符,拆分已有字符串;
sep用于分割字符串(空格逗号);
n分割为多少列;
expend是否展开为数据框,默认不展开,返回的是系列Series,展开时返回dataframe

    split(sep, n, expend = False)

记录抽取

比较运算

< > >= <= !=
comments为列名,
返回这列中满足>10000条件的所在行

    df[df.comments > 10000]

范围运算

    df[df.comments.between(1000,10000)]

空值匹配

找出为标题为空的行

    df[pandas.isnumm(df.title)]

字符匹配

抽取title所在列包含某个字符的所在行

    df[df.title.str.contains('', na = False)] # 控制不需要匹配

逻辑运算

    df[(df.comments>=1000)&(df.comments<=100000)] # 与上面的between效果相同

随机抽样

start范围开始值(闭)一般为0
end范围结束值(开)
num抽样个数
返回的是行数的索引值系列Series

    numpy.random.randint(start,end,num)

记录合并

将两个结构相同的数据框,合并成一个数据框

    import pandas;
    df3 = pandas.concat([dataFrame1,dataFrame2])

字段合并

是字段拆分的逆过程,将一个数据框中多列(数字要先转换成字符型)进行合并
返回一个系列

    新列名 = df['列名1'] + df['列名2'] + df['列名3']

字段匹配

将不同结构的数据框,按照一定条件进行合并
x第一个数据框
y第二个数据框
yleft_on第一个数据框用于匹配的列
right_on第二个数据框用于匹配的列
返回的是新的数据框

    import pandas;
    df1 = pandas.merge(x, y, left_on, right_on)

简单计算

    result = df.price * df.num
    df['sum'] = result

数据标准化

0-1标准化:
x ∗ = x − m i n / m a x − m i n x^* = {x-min}/{max-min} x ∗ = x − m i
n / m a x − m i n

    scale = (df.acore-df.score.min())/(df.score.max()-df.score.min())

数据分组

根据分析对象的特征,按照一定的数值指标,把数据分析对象划分为不同的区间部分;
series需要分组的数据
bins分组的划分数组
right分组的时候右边是否闭合
labels分组的自定义标签,可以不定义

    cur(series, bins, right = True, labels = NULL)
    # 先生成两个系列:数组和标签
    bins = [min(df.cost)-1,20,40,60,80,100,max(df.cost)+1];
    labels = ['20以下','20-40','40-60','60-80','80-100','100以上'];
    pandas.cut(df.cost,bins,right = Ture, labels = labels)

日期转换

将字符型数据转换为日期型数据
%Y年份
%m月份
%d日期
%H小时
%M分钟
%S秒
返回一个时间格式的系列

    df_dt = to_datatime(df.列名, format)
    
    df_df = to_datatime(df.日期, '%y-%m-%d')

日期格式化

将日期型数据转换为字符型数据

    apply(lambda x:处理逻辑)
    datatime.strftime(x,format)
    
    df_dt_str = df_dt.apply(lambda x: datatime.strftime(x,'%d-%m-%s'))

日期抽取

从日期格式里面,抽取出需要的部分属性

    datatime列.dt.property
    
    df_dt.dt.year
    df_dt.dt.minute

散点图

    import matplotlib
    import matplotlib.pyplot as plt
    plot(x,y,'.',color = (r,g,b)) #大点使用'o'
    plt.xlabel('x轴标签')
    plt.ylabel('y轴标签')
    plt.grid(True) # 背后的方格
    plt.show()

RGB颜色设置
(red,green,blue)不是0-255而是0-1

折线图

-实线
–虚线
-.
:
.
o
,

    plot(x,y,style,color,linewidth)
    title('title')

饼图

参数分别是序列、各部分标签、各部分颜色、需要突出的块状序列、占比的显示格式

    pie(x,labels,colors,ecplode,autopct)

柱形图

参数分别代表x轴的位置序列(一般arrange)、y轴位置序列、柱形图的宽度、填充颜色

    bar(left,height,width,color) #横向
    barh(bottom,width,height,color) # 竖向

直方图

统计的是数据出现的次数,比较频数的差异
x需要绘制的向量
color直方图的填充颜色
bins分组个数
cumulative是否累计计数

    hist(x,color,bins,cumulative=False)

在这里插入图片描述

标签:数据分析,df,列名,labels,pandas,dt,数据,spyder
来源: https://www.cnblogs.com/lj-C/p/14974466.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有