python中数据可视化基础

  • 1、numpy 模块
  • 2、 pandas 模块
  • 3、数据读取与导入
  • 4、matolotlib 模块



本文主要讲解python的数据可视化基础,内容包括:numpy、pandas、matolotlib。


上一篇:

python数据分析之pandas

1、numpy 模块

# -*- coding: utf-8 -*-
# --------------------------------------
# @Time    : 2019/10/14 14:32
# @Author  : hxf
# @File    : shuju1_numpy.py
# Description :numpy模块
# ----------------------------------
'''
1、创建数组格式
	一维数组:numpy.array([元素1,元素2,元素3,...,元素n])
	二维数据:numpy.array([[元素1,元素2,...,元素n],[元素1,元素2,...,元素n],[元素1,元素2,...,元素n]])
2、数组排序
	sort()
3、数组取最大值和最小值
	max()、min()
4、数组的切片操作
	数组[起始下标:最终下标+1]

'''
import numpy as np

#创建数组
print('---------------------一维数组---------------------')
x=np.array(["a","8","9","12"])
print(x)
print(type(x))

print('---------------------二维数组----------------------')
y=np.array([[1,7,3],[5,8,2],[9,4,7]])
print(y)
print(type(y))
print('---------------------取特定元素---------------------')
print(x[2])
print(y[1][2])

#数组排序
print('---------------------排序后的数组---------------------')
x.sort()
print(x)
y.sort()
print(y)

#数组最大值和最小值
print('---------------------数组最大值和最小值---------------------')
y1=y.max() #list中也有求max和min,但数组的效率高
y2=y.min()
print('y的最大值:',y1)
print('y的最小值:',y2)

#数组的切片操作
print(x[1:3]) #1-2号元素

2、 pandas 模块

'''
panda模块:
	Series #index 索引
	DataFrame # columns列名
'''
import pandas as pda

print('--------------------------Series创建一串数据-----------------------------')
a=pda.Series([8,9,2,1])
print(a)
'''
0    8
1    9
2    2
3    1
dtype: int64
'''
#指定索引
b=pda.Series([8,9,2,1],index=['One','Two','Three','Four'])
print(b)
'''
One      8
Two      9
Three    2
Four     1
dtype: int64
'''
print('--------------------------DataFrame 创建数据框-----------------------------')
c=pda.DataFrame([[5,6,2,3],[8,4,6,3],[6,4,31,2]])
print(c)
'''
   0  1   2  3
0  5  6   2  3
1  8  4   6  3
2  6  4  31  2
'''
print('-------------------------------------------------------')
d=pda.DataFrame([[5,6,2,3],[8,4,6,3],[6,4,31,2]],columns=['One','Two','Three','Four'])#指定列名
print(d)
'''
   One  Two  Three  Four
0    5    6      2     3
1    8    4      6     3
2    6    4     31     2
'''
print('-------------------------------------------------------')
e=pda.DataFrame({                   # 通过字典创建数据
	"one":4,
	"two":[6,2,3],
	"three":list(str(982))
})
print(e)
'''
    one  two three
0    4    6     9
1    4    2     8
2    4    3     2
'''
print('-------------------------------------------------------')
print(d.head())      # 头部数据,默认前5行
'''
   One  Two  Three  Four
0    5    6      2     3
1    8    4      6     3
2    6    4     31     2
'''
print('-------------------------------------------------------')
print(d.tail(2))     # 取后两行
'''
   One  Two  Three  Four
1    8    4      6     3
2    6    4     31     2
'''
print('-------------------------------------------------------')
print(d.describe())  # 按列统计描述
'''
            One       Two      Three      Four
count  3.000000  3.000000   3.000000  3.000000
mean   6.333333  4.666667  13.000000  2.666667
std    1.527525  1.154701  15.716234  0.577350
min    5.000000  4.000000   2.000000  2.000000
25%    5.500000  4.000000   4.000000  2.500000
50%    6.000000  4.000000   6.000000  3.000000
75%    7.000000  5.000000  18.500000  3.000000
max    8.000000  6.000000  31.000000  3.000000
'''
#转置
print('-------------------------------------------------------')
print(d.T) # 转置
'''
       0  1   2
One    5  8   6
Two    6  4   4
Three  2  6  31
Four   3  3   2
'''

3、数据读取与导入

# ----------------------------------
'''
数据导入
	导入csv文件
	导入excel文件
	导入MySQLS数据库中的数据
	导入html数据
	导入文本数据 read_table
'''
import pandas as pda
print('----------------------------------读取csv文件------------------------------------------------')
i=pda.read_csv('data/hexun.csv')
print('----------------------------------------------------------------------------------')
print(i)
print(i.describe())
print('----------------------------------------------------------------------------------')
print(i.sort_values(by="hits"))

print('----------------------------------读取excel文件------------------------------------------------')
j=pda.read_excel('data/hexun.xls')
print('----------------------------------------------------------------------------------')
print(j)
print(j.describe())
print('----------------------------------------------------------------------------------')
print(j.sort_values(by="hits"))

print('----------------------------------读取html数据------------------------------------------------')
k=pda.read_html('data/abc.html')
print(k)
l=pda.read_html('https://book.douban.com/')
print(l)

print('----------------------------------读取txt文件------------------------------------------------')
m=pda.read_table('data/abc.txt')
print(m)

'''
print('----------------------------------读取sql文件------------------------------------------------')
import pymysql
conn=pymysql.connect(host="127.0.0.1",user="root",passwd="123456",db="hexun")
sql="select * from myhexun"
n=pda.read_sql(sql,conn)
print(n)
'''

4、matolotlib 模块

'''
matplotlib.pyplot模块
	1、折线图和散点图plot  plot(x轴数据,y轴数据,展现形式),参数是可以叠加的
		颜色参数:
			c-cyan--青色
			r-red--红色
			m-magente--品红
			g-green--绿色
			b-blue--蓝色
			y-yellow--黄色
			k-black--黑色
			w-white--白色
		线条样式:
			-  直线
			-- 虚线
			-. -.式
			:  细小虚线
		点的样式:
			s--方形
			h--六角形
			H--六角形
			*--星形
			+--加号
			x--x形
			d--菱形
			D--菱形
			p--五角星
	2、直方图hist
		随机数的生成
		直方图绘制 hist(data,sty,histtype)  # 数据 形式 轮廓参数
	3、子图绘图
		subplot(2,2,1)
	4、可视化分析案例
		读取和讯博客的数据并可视化分析


'''
'''
import matplotlib.pyplot as pyl
import numpy as np

# 1、折线图和散点图plot
x=[1,2,3,4,8]
y=[5,7,2,1,5]
'''

'''
pyl.plot(x,y)          # 折线图
pyl.show()
pyl.plot(x,y,'o')      # 散点图,会叠加
pyl.show()

pyl.plot(x,y,'oc')     # 青色的散点图
pyl.show()

pyl.plot(x,y,'-')      # 直线
pyl.show()

pyl.plot(x,y,'--')       # 虚线
pyl.show()

pyl.plot(x,y,'-.')       # 虚线
pyl.show()

pyl.plot(x,y,':')       # 细小虚线
pyl.show()

pyl.plot(x,y,'*')       # 星形
pyl.show()

pyl.plot(x,y,'d')       # 菱形
pyl.show()

pyl.plot(x,y,'h')       # 六角形
pyl.show()
'''

'''
pyl.plot(x,y)
x2=[1,3,6,8,10,12,19]
y2=[1,6,9,10,19,23,35]
pyl.plot(x2,y2)

pyl.title("show")         # 添加标题
pyl.xlabel("ages")        # 添加x轴标题
pyl.ylabel("temp")        # 添加y轴标题
pyl.xlim(0,20)            # 设置x轴范围
pyl.ylim(0,35)            # 设置y轴范围
pyl.show()
'''

'''
# 2、直方图hist
# 随机数的生成
import numpy as np
data=np.random.random_integers(1,20,10) #(最小值,最大值,个数) 生成随机整数
# print(data)
data2=np.random.normal(5.0,2.0,10) # (均值,西格玛,个数) 生成正态分布的随机数
# print(data2)

data3=np.random.normal(10.0,1.0,10000)
# pyl.hist(data3)
# pyl.show()

data4=np.random.random_integers(1,25,1000)
# print(data4)
# pyl.hist(data4)
sty=np.arange(1,30,2)
# pyl.hist(data4,sty)
# pyl.hist(data4,sty,histtype='stepfilled')
# pyl.hist(data4,histtype='stepfilled')
# pyl.show()
# 更多随机数生成更多知识参考http://www.mamicode.com/info-detail-507676.html

#3、柱状图
# -*- coding: utf-8 -*-
import matplotlib.pyplot as plt

num_list = [1.5, 0.6, 7.8, 6]
plt.bar(range(len(num_list)), num_list)
plt.show()

# 4、子图绘图
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=[5,2,3,8,6]
y2=[7,9,12,12,3]
pyl.plot(x2,y2)

pyl.subplot(2,1,2)
x3=[5,6,7,10,19,20,29]
y3=[6,2,4,21,5,1,5]
pyl.plot(x3,y3)
pyl.show()

'''
'''
5.可视化分析案例
	读取和讯博客的数据并可视化分析
'''
# 读取和讯博客的数据并可视化分析
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

data=pd.read_csv('data/myhexun.csv')
# print(data.shape) # 查看数据结构
# print(data.values)  # 查看 values[第几行][第几列]
# print(data.values[0])
# print(data.values[1][1])

# 转置
data2=data.T
y1=data2.values[3] # 获取阅读数
x1=data2.values[4] # 获取评论数
# plt.plot(x1,y1)
# plt.show()
x2=data2.values[0] # 取id
# plt.plot(x2,y1)
# plt.show()
plt.plot(x2,x1)
plt.show()