数据分析处理库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 ...
随机推荐
- CentOS 系统时间与硬件时间
date 系统时间查看 date -s 'YYYYMMDD HHMMSS' 设置系统时间 hwclock 硬件时间查看 hwclock -w 将系统时间同步到硬件时间 cp /usr/share/zo ...
- linux 重定向命令详解(如1>/dev/null 2>&1)
基础 0:表示标准输入stdin 1:表示标准输出stdout,系统默认为1,可省略(即1>/dev/null等价于>/dev/null) 2:表示标准错误stderr >:表示重定 ...
- PAT1020 (已知中序,后序遍历转前序遍历)
已知后序与中序输出前序(先序):后序:3, 4, 2, 6, 5, 1(左右根)中序:3, 2, 4, 1, 6, 5(左根右) 已知一棵二叉树,输出前,中,后时我们采用递归的方式.同样也应该利用递归 ...
- 5. Longest Palindromic Substring (DP)
Given a string S, find the longest palindromic substring in S. You may assume that the maximum lengt ...
- 初识Netty
我们已经了解了Socket通信/IO/NIO/AIO编程,对于通信模型已经有了一个初步的认识,其实我们之前所学习的仅仅是一个模型,如果想把这些真正的用于实际工作中去,其实我们之前所学习的仅仅是一个模型 ...
- Ubuntu虚拟机全屏问题
方法一:修改分辨率 xrandr查看能用的 xrandr -s 1920x1200改变. 方法二:安装新vmtools apt-get install open-vm-tools apt-get in ...
- pa sslvpn配置
1.新建隧道接口 2.新建区域,并将该区域与上一步中的隧道接口关联 3.新建本地证书及配置文件 (1) 常见名称处填写防火墙外网口IP. 添加成功后的证书信息如下: 2)新建SSL/TLS服务配置文件 ...
- 将unitest整合和python发送测试报告
废话少说先上代码 # -*- coding:UTF-8 -*- __autor__ = 'zhouli' __date__ = '2018/11/12 21:29' import unittest i ...
- OC 线程操作1 - pthread
#import "ViewController.h" #import <pthread.h> //1.需要包含这个头文件 @interface ViewControll ...
- 31-java中知识总结:list, set, map, stack, queue
import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; import java.util.Lin ...