数据分析处理库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 ...
随机推荐
- http协议与常见状态码
什么是http: http是属于应用层(基于tcp的连接方式)的面向对象的协议,是计算机通过网络通信的规则,使得浏览器向web服务器请求信息和服务 http协议特点: http是一种无状态协议(对食物 ...
- DC之setup-hold time详解
转自一下站点: http://www.blogbus.com/bb2hh-logs/20463915.html
- Devexpress Gridview 自定义汇总CustomSummaryCalculate(加权平均)
Devexpress Gridview 提供了简单的求和,平均等方法,复杂的汇总方法则需要自定义,使用gridview 的CustomSummaryCalculate 事件,根据官网的文档及各论坛案例 ...
- uniquefu Python+Selenium学习--select
场景 在处理下拉框(select)的时候selenium给我们提供了一系列的便捷方法,我们只需要使用selenium.webdriver.support.select.Select类来稍微封装一下就好 ...
- CyclicBarrier簡介
package CyclicBarrier; import java.util.concurrent.CyclicBarrier;import java.util.concurrent.atomic. ...
- Java-排序算法-冒泡排序
一.冒泡排序的原理 冒泡排序,就是从第一个元素开始,通过两两交换,使小的先冒出来,然后再走第二轮使次小的冒出来,直到最后一轮最大的冒出来,排序完成 二.冒泡排序的伪代码实现: bubblesort(A ...
- swift - scrollview 判断左右移动, 以及上下两个view联动
核心代码 1. 2. 3. 界面代码VFL /* 浏览作品view*/ import UIKit /** * 图片浏览器(大图和缩略图) */ class JYBrowseWorksView: UIV ...
- MyBatis延迟加载和缓存(4)
一.项目创建 1.项目目录结构 2.数据库配置和上一篇的一样,这里不再描述.下面创建mybatis配置文件SqlMapConfig.xml <?xml version="1.0&quo ...
- 当前的开源SLAM方案
开源方案 传感器形式 地址链接 MonoSLAM 单目 https://github.com/hanmekim/SceneLib2 PTAM 单目 http://www.robots.ox.ac. ...
- Charles基本使用
Charles使用 查找电脑IP,菜单选项helpàLocal IP Addresses 手机连接代理 手机打开WiFi,把代理模式设置为手动,设置主机名为Charles所在机器的ip,端口号为Cha ...