笔者是一个痴迷于挖掘数据中的价值的学习人,希望在平日的工作学习中,挖掘数据的价值,找寻数据的秘密,笔者认为,数据的价值不仅仅只体现在企业中,个人也可以体会到数据的魅力,用技术力量探索行为密码,让大数据助跑每一个人,欢迎直筒们关注我的公众号,大家一起讨论数据中的那些有趣的事情。
我的公众号为:livandata
1、数据分析的内容:
2、数据分析与挖掘的相关模块:
3、安装报错:
Import genism时会报错:Chunkize warning while installing gensim
此时需要在import genism前面加上:
UserWarning: detected Windows; aliasingchunkize to chunkize_serial
warnings.warn("detected Windows;aliasing chunkize to chunkize_serial")
解决方案:
在import gensim前面加入:
import warnings
warnings.filterwarnings(action='ignore',category=UserWarning, module='gensim')
import gensim
numpy的最大功能是创建数组,创建数组的格式为:numpy.array([“a”,”f”,”e”])
#!/usr/bin/env python
# _*_ UTF-8 _*_
import numpy
#一维数组
x=numpy.array(['s','d','f'])
#二维数组[[],[],[]]
y=numpy.array([[3,13,23],[3,4,6],[2,3,5]])
#排序:sort()
x.sort()
y.sort()
#取最大值和最小值:
y1 = y.max()
y2 = y.min()
#切片:
#数组[起始下标:最终下标+1]
#例:x[1:3] #即取到1-2;
Pandas的使用:
#!/usr/bin/env python
# _*_ UTF-8 _*_
import pandas as pda
#series:代表一行或者一列
#一串数字即代表一个series,字符串前面会自动添加索引,如果不指定索引,则会0,1……往下添加。
#DataFrame:类似于表格,即行和列整合在一起的数据结构
#索引默认0,1,2,3
a = pda.Series([8,9,2,1])
#指定索引:
b = pda.Series([8,9,2,1], index=["one","two","three","four"])
#默认行列名
c = pda.DataFrame([[5,6,2,3],[8,4,6,3],[6,4,31,2]])
#指定行列名:
d = pda.DataFrame([[5,6,2,3],[8,4,6,3],[6,4,31,2]], columns=["one","two","three","four"])
#通过字典的方式来创建数据框:
e = pda.DataFrame({
"one":4, #如果数字不足,系统会自动填充。
"two":[6,2,3],
"three":list(str(982))
})
#头部数据,默认显示前五行,如果不够五行则取前五行。
d.head(5)
#取数据的后五行,默认五行:
d.tail()
#按列统计数据的情况,会显示多个统计值。
d.describe()
#转置:即将行变成列,将列变成行;
d.T
4、数据导入部分:
Csv文件格式问题经常会出现,对于常用的csv的文件,需要以utf-8的方式保存,即已另存为的方式保存为utf-8的csv文件格式。
其他方式会报错:编码失败的错误(以什么方式编码,就以什么方式解码)。
导入csv格式文件:
import pandas as pda
#导入csv格式的内容:
i = pda.read_csv("abc2.csv", delimiter='\t')
print(i)
i.describe()
i.sort_values(by='A')
导入Excel文件:
#!/usr/bin/env python
# _*_ UTF-8 _*_
import pandas as pda
#导入Excel数据:
i = pda.read_excel('abc.xlsx')
print(i)
导入mysql的数据:
中间存在乱码问题,需要解决。
import pandas as pda
import pymysql
conn = pymysql.connect(host="127.0.0.1",
user="root",
passwd="123456",
db="livan")
sql = "select * from goods"
k = pda.read_sql(sql, conn)
print(k)
导入HTML数据:
import pandas as pda
#abc.html也可以更换成http://www.baidu.com等网页,只要网页中有table即可。
kl = pda.read_html("abc.html")
print(kl)
导入文本数据:
#!/usr/bin/env python
# _*_ UTF-8 _*_
import pandas as pda
ts = pda.read_table("abc.txt")
print(ts)
5、matplotlib的作图基础:
以基础的方式讲解,主要讲解折线图和散点图。
#!/usr/bin/env python
# _*_ UTF-8 _*_
import matplotlib.pylab as pyl
import numpy as npy
#折线图或者散点图matplotlib.pylab:
x = [1,2,3,4,8]
y = [5,7,2,1,5]
# 折线图:
# 一般会有几个参数,x轴的数据,Y轴的数据,展现形式;
#pyl.plot(x, y)
# pyl.show()
# 散点图:
#pyl.plot(x, y, 'o')
# pyl.show()
#改变颜色:
#c---cyan---青色;
#r---red---红色;
#m---magente---品红;
#g---green---绿色;
#b---blue---蓝色;
#y---yellow---黄色;
#k---black---黑色;
#w---white---白色;
#第三个参数可以叠加。
# pyl.plot(x, y, 'oc')
# pyl.show()
# 线条的样式:
#“-”普通的直线;
#“--” 代表虚线;
#“-.”-。的形式;
#“:”细小虚线。
# pyl.plot(x, y, '--')
# pyl.show()
#改变点的样式:
#s---方形;
#h---六角形;
#*---星型;
#+---加号的形式;
#x--x型;
#d---菱形;
# p---五角型
pyl.plot(x, y, '*')
# 同一副图上添加第二幅
x2 = [1,3,6,8,10,12,13,19]
y2 = [1,6,9,10,19,23,35,34]
pyl.plot(x2, y2)
pyl.plot()
# pyl.show()
# 标题,坐标等设置
pyl.title("show")
pyl.xlabel("ages")
pyl.ylabel("temp")
pyl.xlim(0,10)
pyl.ylim(0,8)
pyl.show()
讲直方图:
如何生成随机数:
#!/usr/bin/env python
# _*_ UTF-8 _*_
import matplotlib.pylab as pyl
import numpy as npy
# 直方图hist:
# (最小值,最大值,个数)
# data = npy.random.random_integers(1,20, 10)
#生成具有正态分布的随机数:
#(平均数, 标准差,个数)
data = npy.random.normal(10.0,1.0,10000)
data2 = npy.random.random_integers(1,25,10000)
# pyl.hist(data2)
#设置直方图的宽度,上限和下限参数为:(上限,下限,宽度)
sty = npy.arange(2, 17, 4)
#取消柱型轮廓:histtype='stepfilled'
pyl.hist(data, sty, histtype='stepfilled')
sty = pyl.show()
print(data)
如何创建子图:
如图区域如何实现:
#!/usr/bin/env python
# _*_ UTF-8 _*_
import matplotlib.pylab as pyl
import numpy as npy
#子图:同一个图片有多个图片:
#参数:(行,列,当前区域)
pyl.subplot(2,2,1)
x1=[1,2,3,4,5]
y1=[5,3,5,23,5]
pyl.plot(x1,y1)
pyl.subplot(2,2,2)
x2=[1,2,3,4,5]
y2=[5,3,5,23,5]
pyl.plot(x2,y2)
pyl.subplot(2,1,2)
x3=[1,2,3,4,5]
y3=[5,3,5,23,5]
pyl.plot(x3,y3)
pyl.show()
43、读取和讯博客的数据,并进行可视化分析:
#!/usr/bin/env python
# _*_ UTF-8 _*_
import matplotlib.pylab as pyl
import numpy as npy
import pandas as pda
data = pda.read_csv("F:/python_workspace/file/hexun.csv")
# # 查看各行列的详细内容[第几行][第几列]
# print(data.values)
# #取一行
# print(data.values[1])
# #取一个单元格
# print(data.values[1][1])
# print(data.shape)
# 取出一列的数据(取出第三列):
data2 = data.T
y1 = data2.values[3]
x1 = data2.values[4]
# pyl.plot(x1, y1)
# pyl.show()
x2 = data2.values[0]
pyl.plot(x2, y1)
pyl.show()