数据分析处理库pandas及可视化库Matplotlib
一、读取文件
1)读取文件内容

import pandas
info = pandas.read_csv('1.csv',encoding='gbk') # 获取文件信息
print(info)
print(type(info)) # 查看文件类型
print(info.dtypes) # 查看每列文件的类型
print(help(pandas.read_csv))

2)获取文件的信息
import pandas
info = pandas.read_csv('1.csv',encoding='gbk')
print(info.head()) # 获取前 行的信息
print(info.tail()) # 获取后 行的信息
print(info.columns) # 获取到每列的名字
print(info.shape) # 获取行列,(, ) 29行10列
print(info.loc[]) # 获取第一行的数据
print(info.loc[:]) # 切面,获取前3行数据
print(info.loc[[,,]]) # 获取指定行的数据
print(info["承诺完成时间点"]) # 获取该列的数据
print(info[["提交人","承诺完成时间点"]]) # 获取多列的信息
print(info.loc[,"提交人"]) # 定位到具体的某一个位置
获取以什么结尾的列的信息
import pandas
info = pandas.read_csv('1.csv',encoding='gbk')
# 获取以“人”为结尾的列的信息
col_names = info.columns.tolist()
# print(col_names)
gram_columns = []
for c in col_names:
if c.endswith("人"):
gram_columns.append(c)
gram_df = info[gram_columns]
print(gram_df)
3)获取经过调整的文件信息
import pandas
info = pandas.read_csv('1.csv',encoding='gbk')
print(info['完成状态']*) # 该列的每一个值都乘以100
print(info['完成状态'].max()) # 获取该列的最大值
print(info['完成状态'].min()) # 获取该列的最小值
# ################################
# 调整排序顺序
info.sort_values("完成状态",inplace=True,ascending=False) # 默认是升序排序。ascending=False 设置了这个,则是降序
print(info["完成状态"])
重新按照索引值排序
info = pd.read_csv('1.csv',encoding='gbk')
.........
# 顺序被打乱后
info2 = info.reset_index(drop=True) # 重做索引
4)查看缺失值
import pandas as pd
info = pd.read_csv('1.csv',encoding='gbk')
date = info["完成状态"]
# print(date_ti)
date_ti_null = pd.isnull(date) # 获取到每一个值是否有,有就返回False,没有返回True
print(date_ti_null)
date_ti_true = date[date_ti_null] # 获取到缺失值的信息位置
print(date_ti_true)
age_null_count = len(date_ti_true) # 计算缺少值的个数
print(age_null_count)
5)计算平均值,需要去掉缺失值
import pandas as pd
info = pd.read_csv('1.csv',encoding='gbk')
average = sum(info["完成状态"]) / len(info["完成状态"])
print(average) # nan 因为有缺失值,所有不能直接计算
date = info['完成状态']
date_ti_null = pd.isnull(date)
good_date = info['完成状态'][date_ti_null == False]
print(good_date)
correct_average = sum(good_date) / len(good_date)
print(correct_average) # 计算正确的平均值
# ===============================================
print(info["完成状态"].mean()) # 直接计算平均值
6)计算关联信息直接的数据
import pandas as pd
import numpy as np
info = pd.read_csv('1.csv',encoding='gbk')
message = info.pivot_table(index="提交人",values="完成状态",aggfunc=np.sum) # 分析数据,计算index与value的关系的和,np.sum是和,np.mean是平均值
print(message)
message2 = info.pivot_table(index="预估工时(天)",values="完成状态") # aggfunc=np.mean 默认计算平均值
print(message2)
8)删除掉有缺失值的行
import pandas as pd
info = pd.read_csv('1.csv',encoding='gbk')
drop_columns = info.dropna(axis=)
print(drop_columns)
new_info = info.dropna(axis=,subset=["任务名称","提交人"]) # 删除掉有缺失值的行
print(new_info)
9)利用函数来简化操作
import pandas as pd
info = pd.read_csv('1.csv',encoding='gbk')
# 自定义含义获取该行的信息
def hundredth_row(column):
hundredth_item = column.loc[]
return hundredth_item
hundredth_row = info.apply(hundredth_row)
print(hundredth_row)
# 查看所有列缺失值的个数
def not_null_count(column):
column_null = pd.isnull(column)
null = column[column_null]
return len(null)
column_null_count = info.apply(not_null_count)
print(column_null_count)
# 修改获取到值的状态
def which_class(row):
pclass = row["完成状态"]
if pd.isnull(pclass):
return "Unknown"
elif pclass == :
return "First Class"
elif pclass == :
return "Second Class"
else:
return "Third Class"
classes = info.apply(which_class,axis = )
print(classes)
# 修改某一阶段的值
def is_minor(row):
if row["完成状态"] < :
return True
else:
return False
minors = info.apply(is_minor,axis=)
print(minors)
二、总结
info = pandas.read_csv('1.csv',encoding='gbk') # 获取文件信息
type(info) # 查看文件类型
info.dtypes # 查看每列文件的类型
info.head() # 获取前 行的信息
info.tail() # 获取后 行的信息
info.columns # 获取到每列的名字
info.shape # 获取行列,(, ) 29行10列
info.loc[] # 获取第一行的数据
info.loc[:] # 切面,获取前3行数据
info.loc[[,,]] # 获取指定行的数据
info["承诺完成时间点"] # 获取该列的数据
info[["提交人","承诺完成时间点"]] # 获取多列的信息
====================================================
info = pandas.read_csv('1.csv',encoding='gbk')
info['完成状态']* # 该列的每一个值都乘以100
info['完成状态'].max() # 获取该列的最大值
info['完成状态'].min() # 获取该列的最小值
info.sort_values("完成状态",inplace=True,ascending=False) # 默认是升序排序。ascending=False 设置了这个,则是降序
print(info["完成状态"]) # 查看上面排序的情况
pd.isnull(info["完成状态"]) # 查看是否有缺失值
info["完成状态"].mean() # 直接计算平均值
==============================================
info.pivot_table(index="提交人",values="完成状态",aggfunc=np.sum) # 分析关联信息直接的数据
info.dropna(axis=,subset=["任务名称","提交人"]) # 删除掉有缺失值的行
info.loc[,"提交人"] # 定位
==============================
import pandas
info = pandas.read_csv('1.csv',encoding='gbk')
print(info.head()) # 获取前 行的信息
print(info.tail()) # 获取后 行的信息
print(info.columns) # 获取到每列的名字
print(info.shape) # 获取行列,(, ) 29行10列
print(info.loc[]) # 获取第一行的数据
print(info.loc[:]) # 切面,获取前3行数据
print(info.loc[[,,]]) # 获取指定行的数据
print(info["承诺完成时间点"]) # 获取该列的数据
print(info[["提交人","承诺完成时间点"]]) # 获取多列的信息
print(info.loc[,"提交人"]) # 定位到具体的某一个位置
from pandas import Series:Series结构,前面熟练了,再了解
相关文章链接 : https://www.cnblogs.com/why957/p/9303780.html
三、数据分析,绘制单图形
1)生成绘图栏
import matplotlib.pylab as plt
plt.plot()
plt.show()

2)将下面数据绘制成折线图

使用pandas模块拿到数据
import pandas as pd
info = pd.read_csv('2.csv',encoding='gbk')
info["DATE"] = pd.to_datetime(info["DATE"])
print(info.head())
相当于拿这些数据绘制折线图

使用数据绘制图形
import pandas as pd
import matplotlib.pylab as plt
info = pd.read_csv('2.csv',encoding='gbk')
first_twelve = info[:]
plt.plot(first_twelve["DATE"],first_twelve["VALUE"])
plt.show()

可以更改坐标的倾斜度。plt.xticks(rotation=45)
import pandas as pd
import matplotlib.pylab as plt
info = pd.read_csv('2.csv',encoding='gbk')
first_twelve = info[:]
plt.plot(first_twelve["DATE"],first_twelve["VALUE"])
plt.xticks(rotation=)
plt.show()

可以增加标题
import pandas as pd
import matplotlib.pylab as plt
info = pd.read_csv('2.csv',encoding='gbk')
first_twelve = info[:]
plt.plot(first_twelve["DATE"],first_twelve["VALUE"])
plt.xticks(rotation=)
plt.xlabel('Month')
plt.ylabel('Money')
plt.title('1948.Month and Money')
plt.show()

对于横坐标的bug调整,日期格式,以及如果要求显示的的长度过长,会出现线性故障
import pandas as pd
import matplotlib.pylab as plt
unrate = pd.read_csv('2.csv',encoding='gbk')
unrate["DATE"] = pd.to_datetime(unrate["DATE"]) # 调整坐标日期格式
first_twelve = unrate[:] # 坐标出现的长度
plt.plot(first_twelve["DATE"],first_twelve["VALUE"])
plt.xticks(rotation=)
plt.xlabel('Month')
plt.ylabel('Money')
plt.title('1948.Month and Money')
plt.show()

二、绘制多图形
1)生成子图形
import matplotlib.pylab as plt
fig = plt.figure()
ax1 = fig.add_subplot(,,)
ax2 = fig.add_subplot(,,)
ax3 = fig.add_subplot(,,)
plt.show()
ax1 = fig.add_subplot(2,2,1) # 图形为2行2列的第1个图形
ax2 = fig.add_subplot(2,2,2) # 图形为2行2列的第2个图形
ax3 = fig.add_subplot(2,2,4) # 图形为2行2列的第4个图形

2)figsize=(3,6) 绘图的长度,长宽
import numpy as np
import matplotlib.pylab as plt
fig = plt.figure(figsize=(,)) # figsize=(,) 绘图的长度,长宽
ax1 = fig.add_subplot(,,)
ax2 = fig.add_subplot(,,)
ax1.plot(np.random.randint(,,),np.arange())
ax2.plot(np.arange()*,np.arange())
plt.show()
3)在同一个图绘制2条折线图
import pandas as pd
import matplotlib.pylab as plt
unrate = pd.read_csv('2.csv',encoding='gbk')
unrate["DATE"] = pd.to_datetime(unrate["DATE"]) # 调整坐标日期格式
fig = plt.figure(figsize=(,))
plt.plot(unrate[:]['DATE'],unrate[:]['VALUE'],c='red')
plt.plot(unrate[:]['DATE'],unrate[:]['VALUE'],c='blue')
plt.show()
4)循环绘制多条折线图
import pandas as pd
import matplotlib.pylab as plt
unrate = pd.read_csv('2.csv',encoding='gbk')
unrate["DATE"] = pd.to_datetime(unrate["DATE"]) # 调整坐标日期格式
fig = plt.figure(figsize=(,))
colors = ['red','blue','green','orange','black']
for i in range():
start_index = i*
end_index = (i+)*
subset = unrate[start_index:end_index]
plt.plot(subset['DATE'],subset['VALUE'],c = colors[i])
plt.show()
5)定义折现的含义
import pandas as pd
import matplotlib.pylab as plt
unrate = pd.read_csv('2.csv',encoding='gbk')
unrate["DATE"] = pd.to_datetime(unrate["DATE"]) # 调整坐标日期格式
fig = plt.figure(figsize=(,))
colors = ['red','blue','green','orange','black']
for i in range():
start_index = i*
end_index = (i+)*
subset = unrate[start_index:end_index]
label = str( + i)
plt.plot(subset['DATE'],subset['VALUE'],c = colors[i],label=label) # label=label 定义图标的名字
plt.legend(loc='best') # 定义图标放在哪个位置,best 系统感觉放在哪个位置好,就放哪
print(help(plt.legend))
plt.show()

四、绘制柱状图

1)获取csv文件的信息
import pandas as pd
reviews = pd.read_csv('3.csv',encoding='gbk')
cols = ['FILM','爱奇艺','哔哔站','优酷','土豆','凤凰卫士']
norm_reviews = reviews[cols]
print(norm_reviews[:])
FILM 爱奇艺 哔哔站 优酷 土豆 凤凰卫士
0 火影 7 6 8 9 8
将这些信息转换成图形
2)绘制成型的柱状图
import matplotlib.pyplot as plt
from numpy import arange
import pandas as pd
reviews = pd.read_csv('3.csv',encoding='gbk')
num_cols = ['爱奇艺','哔哔站','优酷','土豆','凤凰卫士']
norm_reviews = reviews[num_cols] bar_heights = norm_reviews.ix[, num_cols].values
print(bar_heights)
bar_positions = arange() +
print(bar_positions)
fig,ax = plt.subplots()
ax.bar(bar_positions,bar_heights, 0.3)
plt.show()

3)加上标题,坐标名称。注意不识别中文
import matplotlib.pyplot as plt
from numpy import arange
import pandas as pd
reviews = pd.read_csv('3.csv',encoding='gbk')
num_cols = ['aiqiyi','哔哔站','优酷','土豆','凤凰卫士']
norm_reviews = reviews[num_cols] bar_heights = norm_reviews.ix[, num_cols].values
print(bar_heights)
bar_positions = arange() +
print(bar_positions)
tick_positions = range(,)
fig,ax = plt.subplots() ax.bar(bar_positions,bar_heights, 0.3)
ax.set_xticks(tick_positions)
ax.set_xticklabels(num_cols,rotation=) ax.set_xlabel('source')
ax.set_ylabel('TV')
ax.set_title('ping web')
plt.show()
plt.close()
4)横向柱状图。只需要修改这里即可。ax.barh(bar_positions,bar_heights, 0.3)
import matplotlib.pyplot as plt
from numpy import arange
import pandas as pd
reviews = pd.read_csv('3.csv',encoding='gbk')
num_cols = ['aiqiyi','哔哔站','优酷','土豆','凤凰卫士']
norm_reviews = reviews[num_cols] bar_heights = norm_reviews.ix[, num_cols].values
print(bar_heights)
bar_positions = arange() +
print(bar_positions)
tick_positions = range(,)
fig,ax = plt.subplots() ax.barh(bar_positions,bar_heights, 0.3)
ax.set_xticks(tick_positions)
ax.set_xticklabels(num_cols,rotation=) ax.set_xlabel('source')
ax.set_ylabel('TV')
ax.set_title('ping web')
plt.show()
plt.close()

5)绘制散点图,横坐标是一个网站的评分,纵坐标是另一个网站的评分
import matplotlib.pyplot as plt
import pandas as pd
reviews = pd.read_csv('3.csv',encoding='gbk')
num_cols = ['aiqiyi','哔哔站','优酷','土豆','凤凰卫士']
norm_reviews = reviews[num_cols]
fig,ax = plt.subplots()
ax.scatter(norm_reviews['aiqiyi'],norm_reviews['哔哔站'])
ax.set_xlabel('Fandango')
ax.set_ylabel('Rotten Tommtoes') plt.show()
plt.close()

6)绘制多条散点图
import matplotlib.pyplot as plt
import pandas as pd
reviews = pd.read_csv('3.csv',encoding='gbk')
num_cols = ['aiqiyi','哔哔站','优酷','土豆','凤凰卫士']
norm_reviews = reviews[num_cols]
fig = plt.figure(figsize=(,)) ax1 = fig.add_subplot(,,)
ax2 = fig.add_subplot(,,)
ax1.scatter(norm_reviews['aiqiyi'],norm_reviews['哔哔站'])
ax1.set_xlabel('Fandango')
ax1.set_ylabel('Rotten Tommtoes')
ax2.scatter(norm_reviews['优酷'],norm_reviews['凤凰卫士'])
ax2.set_xlabel('Fandango')
ax2.set_ylabel('Rotten Tommtoes') plt.show()
plt.close()

数据分析处理库pandas及可视化库Matplotlib的更多相关文章
- 动态可视化 数据可视化之魅D3,Processing,pandas数据分析,科学计算包Numpy,可视化包Matplotlib,Matlab语言可视化的工作,Matlab没有指针和引用是个大问题
动态可视化 数据可视化之魅D3,Processing,pandas数据分析,科学计算包Numpy,可视化包Matplotlib,Matlab语言可视化的工作,Matlab没有指针和引用是个大问题 D3 ...
- python 可视化库
在做titanic分析的过程中,看了一些大神的想法,发现在分析数据的过程中,许多大神会使用到seaborn,plotly这些库,而我等小白仅仅知道matplotlib这个唯一的数据可视化库而已.上网查 ...
- Python数据分析库pandas基本操作
Python数据分析库pandas基本操作2017年02月20日 17:09:06 birdlove1987 阅读数:22631 标签: python 数据分析 pandas 更多 个人分类: Pyt ...
- 教程 | 一文入门Python数据分析库Pandas
首先要给那些不熟悉 Pandas 的人简单介绍一下,Pandas 是 Python 生态系统中最流行的数据分析库.它能够完成许多任务,包括: 读/写不同格式的数据 选择数据的子集 跨行/列计算 寻找并 ...
- Python数据可视化库-Matplotlib(一)
今天我们来学习一下python的数据可视化库,Matplotlib,是一个Python的2D绘图库 通过这个库,开发者可以仅需要几行代码,便可以生成绘图,直方图,功率图,条形图,错误图,散点图等等 废 ...
- Python可视化库Matplotlib的使用
一.导入数据 import pandas as pd unrate = pd.read_csv('unrate.csv') unrate['DATE'] = pd.to_datetime(unrate ...
- Python可视化库-Matplotlib使用总结
在做完数据分析后,有时候需要将分析结果一目了然地展示出来,此时便离不开Python可视化工具,Matplotlib是Python中的一个2D绘图工具,是另外一个绘图工具seaborn的基础包 先总结下 ...
- python数据分析库pandas
在我看来,对于Numpy以及Matplotlib,Pandas可以帮助创建一个非常牢固的用于数据挖掘与分析的基础.而Scipy(会在接下来的帖子中提及)当然是另一个主要的也十分出色的科学计算库,但是我 ...
- Matplotlib 库 : 绘图和可视化
一.Matplotlib基础知识 1.1Matplotlib中的基本图表包括的元素 x轴和y轴 axis水平和垂直的轴线 x轴和y轴刻度 tick刻度标示坐标轴的分隔,包括最小刻度和最大刻度 x轴和y ...
随机推荐
- js实现简单拖拽效果
方法如下: var params = { left: 0, top: 0, currentX: 0, currentY: 0, flag: false }; var getCss = function ...
- Centos 下使用VLAN+Bridge 搭建KVM基础网络环境
一.使用环境介绍 宿主机上同时运行多网段虚拟机,为了解决宿主机网卡资源紧张问题,采用如下网络模式:(本实验vlan 105:192.168.5.x vlan108:192.168.8.x) 二. ...
- LibreOJ 6282. 数列分块入门 6
题目链接:https://loj.ac/problem/6282 参考博客:http://www.cnblogs.com/stxy-ferryman/p/8560551.html 这里如果用数组的话元 ...
- 字符串 String 格式化 format
String str=String.format("Hi,%s", "王力"); 保留两位数的整数: String str=String.format(&quo ...
- vue-app项目,将px自动转化为rem
1. 安装lib-flexible: npm install --save lib-flexible 2.安装postcss-loader和postcss-px2rem: npm install -- ...
- 20 【python】入门指南:常用数据结构
Python内置了三种高级数据结构:list,tuple,dict list:数组,相同类型的元素组成的数组 tuple:元组,相同类型的元素组成的数组,但是这里有限定条件(长度是固定的,并且值也是固 ...
- [剑指Offer]48-最长不含重复字符的子字符串(递归思想,循环实现)
题意 如题,字符串只含a-z,输出该子串长度.例:"arabcacfr",输出4. 解题思路 递归思想 计f(i)为以第i个字符结尾的最长不含重复字符的子串长度. 状态转移:计d为 ...
- 2 c++对象被使用前要先被初始化
虽然有些时候int x;会被初始化为0,但是也可能不会,这就造成随机初始值会影响我们程序的运行. 类成员变量初始化顺序是依照其声明顺序而来的.基类要早于派生类别初始化. 构造函数最好使用成员初值列: ...
- 使用插件和不使用插件实现select的框
# 1.select框单选 # 方式1 select1 = fields.ChoiceField( choices=[ (1,"select框方式1_1"), (2,"s ...
- how2j网站前端项目——天猫前端(第一次)学习笔记5
收拾好心情,现在开始学习第5个页面——购物车页面! 一.结算按钮 这个还是比较简单的,我自己看着站长的样子模仿了一个: 有个地方不会做,就是全选前面的复选框,站长的框里面是白色的,我搞不来. 二.订单 ...