一、读取文件

1)读取文件内容

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

2)获取文件的信息

  1. import pandas
  2. info = pandas.read_csv('1.csv',encoding='gbk')
  3. print(info.head()) # 获取前 行的信息
  4. print(info.tail()) # 获取后 行的信息
  5. print(info.columns) # 获取到每列的名字
  6. print(info.shape) # 获取行列,(, ) 29行10列
  7. print(info.loc[]) # 获取第一行的数据
  8. print(info.loc[:]) # 切面,获取前3行数据
  9. print(info.loc[[,,]]) # 获取指定行的数据
  10. print(info["承诺完成时间点"]) # 获取该列的数据
  11. print(info[["提交人","承诺完成时间点"]]) # 获取多列的信息
  12. print(info.loc[,"提交人"]) # 定位到具体的某一个位置

获取以什么结尾的列的信息

  1. import pandas
  2. info = pandas.read_csv('1.csv',encoding='gbk')
  3. # 获取以“人”为结尾的列的信息
  4. col_names = info.columns.tolist()
  5. # print(col_names)
  6. gram_columns = []
  7. for c in col_names:
  8. if c.endswith("人"):
  9. gram_columns.append(c)
  10. gram_df = info[gram_columns]
  11. print(gram_df)

3)获取经过调整的文件信息

  1. import pandas
  2. info = pandas.read_csv('1.csv',encoding='gbk')
  3. print(info['完成状态']*) # 该列的每一个值都乘以100
  4. print(info['完成状态'].max()) # 获取该列的最大值
  5. print(info['完成状态'].min()) # 获取该列的最小值
  6. # ################################
  7. # 调整排序顺序
  8. info.sort_values("完成状态",inplace=True,ascending=False) # 默认是升序排序。ascending=False 设置了这个,则是降序
  9. print(info["完成状态"])

重新按照索引值排序

  1. info = pd.read_csv('1.csv',encoding='gbk')
  2. .........
  3. # 顺序被打乱后
  4. info2 = info.reset_index(drop=True) # 重做索引

4)查看缺失值

  1. import pandas as pd
  2.  
  3. info = pd.read_csv('1.csv',encoding='gbk')
  4. date = info["完成状态"]
  5. # print(date_ti)
  6. date_ti_null = pd.isnull(date) # 获取到每一个值是否有,有就返回False,没有返回True
  7. print(date_ti_null)
  8. date_ti_true = date[date_ti_null] # 获取到缺失值的信息位置
  9. print(date_ti_true)
  10. age_null_count = len(date_ti_true) # 计算缺少值的个数
  11. print(age_null_count)

5)计算平均值,需要去掉缺失值

  1. import pandas as pd
  2.  
  3. info = pd.read_csv('1.csv',encoding='gbk')
  4. average = sum(info["完成状态"]) / len(info["完成状态"])
  5. print(average) # nan 因为有缺失值,所有不能直接计算
  6. date = info['完成状态']
  7. date_ti_null = pd.isnull(date)
  8. good_date = info['完成状态'][date_ti_null == False]
  9. print(good_date)
  10. correct_average = sum(good_date) / len(good_date)
  11. print(correct_average) # 计算正确的平均值
  12. # ===============================================
  13. print(info["完成状态"].mean()) # 直接计算平均值

6)计算关联信息直接的数据

  1. import pandas as pd
  2. import numpy as np
  3. info = pd.read_csv('1.csv',encoding='gbk')
  4. message = info.pivot_table(index="提交人",values="完成状态",aggfunc=np.sum) # 分析数据,计算index与value的关系的和,np.sum是和,np.mean是平均值
  5. print(message)
  6. message2 = info.pivot_table(index="预估工时(天)",values="完成状态") # aggfunc=np.mean 默认计算平均值
  7. print(message2)

8)删除掉有缺失值的行

  1. import pandas as pd
  2.  
  3. info = pd.read_csv('1.csv',encoding='gbk')
  4. drop_columns = info.dropna(axis=)
  5. print(drop_columns)
  6. new_info = info.dropna(axis=,subset=["任务名称","提交人"]) # 删除掉有缺失值的行
  7. print(new_info)

9)利用函数来简化操作

  1. import pandas as pd
  2.  
  3. info = pd.read_csv('1.csv',encoding='gbk')
  4.  
  5. # 自定义含义获取该行的信息
  6. def hundredth_row(column):
  7. hundredth_item = column.loc[]
  8. return hundredth_item
  9. hundredth_row = info.apply(hundredth_row)
  10. print(hundredth_row)
  11.  
  12. # 查看所有列缺失值的个数
  13. def not_null_count(column):
  14. column_null = pd.isnull(column)
  15. null = column[column_null]
  16. return len(null)
  17. column_null_count = info.apply(not_null_count)
  18. print(column_null_count)
  19.  
  20. # 修改获取到值的状态
  21. def which_class(row):
  22. pclass = row["完成状态"]
  23. if pd.isnull(pclass):
  24. return "Unknown"
  25. elif pclass == :
  26. return "First Class"
  27. elif pclass == :
  28. return "Second Class"
  29. else:
  30. return "Third Class"
  31. classes = info.apply(which_class,axis = )
  32. print(classes)
  33.  
  34. # 修改某一阶段的值
  35. def is_minor(row):
  36. if row["完成状态"] < :
  37. return True
  38. else:
  39. return False
  40. minors = info.apply(is_minor,axis=)
  41. print(minors)

二、总结

  1. info = pandas.read_csv('1.csv',encoding='gbk') # 获取文件信息
  2. type(info) # 查看文件类型
  3. info.dtypes # 查看每列文件的类型
  4. info.head() # 获取前 行的信息
  5. info.tail() # 获取后 行的信息
  6. info.columns # 获取到每列的名字
  7. info.shape # 获取行列,(, ) 29行10列
  8. info.loc[] # 获取第一行的数据
  9. info.loc[:] # 切面,获取前3行数据
  10. info.loc[[,,]] # 获取指定行的数据
  11. info["承诺完成时间点"] # 获取该列的数据
  12. info[["提交人","承诺完成时间点"]] # 获取多列的信息
  13. ====================================================
  14. info = pandas.read_csv('1.csv',encoding='gbk')
  15. info['完成状态']* # 该列的每一个值都乘以100
  16. info['完成状态'].max() # 获取该列的最大值
  17. info['完成状态'].min() # 获取该列的最小值
  18. info.sort_values("完成状态",inplace=True,ascending=False) # 默认是升序排序。ascending=False 设置了这个,则是降序
  19. print(info["完成状态"]) # 查看上面排序的情况
  20. pd.isnull(info["完成状态"]) # 查看是否有缺失值
  21. info["完成状态"].mean() # 直接计算平均值
  22. ==============================================
  23. info.pivot_table(index="提交人",values="完成状态",aggfunc=np.sum) # 分析关联信息直接的数据
  24. info.dropna(axis=,subset=["任务名称","提交人"]) # 删除掉有缺失值的行
  25. info.loc[,"提交人"] # 定位
  26. ==============================
  27. import pandas
  28. info = pandas.read_csv('1.csv',encoding='gbk')
  29. print(info.head()) # 获取前 行的信息
  30. print(info.tail()) # 获取后 行的信息
  31. print(info.columns) # 获取到每列的名字
  32. print(info.shape) # 获取行列,(, ) 29行10列
  33. print(info.loc[]) # 获取第一行的数据
  34. print(info.loc[:]) # 切面,获取前3行数据
  35. print(info.loc[[,,]]) # 获取指定行的数据
  36. print(info["承诺完成时间点"]) # 获取该列的数据
  37. print(info[["提交人","承诺完成时间点"]]) # 获取多列的信息
  38. print(info.loc[,"提交人"]) # 定位到具体的某一个位置
  39. from pandas import SeriesSeries结构,前面熟练了,再了解

相关文章链接 : https://www.cnblogs.com/why957/p/9303780.html

三、数据分析,绘制单图形

1)生成绘图栏

  1. import matplotlib.pylab as plt
  2. plt.plot()
  3. plt.show()

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

使用pandas模块拿到数据

  1. import pandas as pd
  2.  
  3. info = pd.read_csv('2.csv',encoding='gbk')
  4. info["DATE"] = pd.to_datetime(info["DATE"])
  5. print(info.head())

相当于拿这些数据绘制折线图

使用数据绘制图形

  1. import pandas as pd
  2. import matplotlib.pylab as plt
  3. info = pd.read_csv('2.csv',encoding='gbk')
  4. first_twelve = info[:]
  5. plt.plot(first_twelve["DATE"],first_twelve["VALUE"])
  6. plt.show()

可以更改坐标的倾斜度。plt.xticks(rotation=45)

  1. import pandas as pd
  2. import matplotlib.pylab as plt
  3. info = pd.read_csv('2.csv',encoding='gbk')
  4. first_twelve = info[:]
  5. plt.plot(first_twelve["DATE"],first_twelve["VALUE"])
  6. plt.xticks(rotation=)
  7. plt.show()

可以增加标题

  1. import pandas as pd
  2. import matplotlib.pylab as plt
  3. info = pd.read_csv('2.csv',encoding='gbk')
  4. first_twelve = info[:]
  5. plt.plot(first_twelve["DATE"],first_twelve["VALUE"])
  6. plt.xticks(rotation=)
  7. plt.xlabel('Month')
  8. plt.ylabel('Money')
  9. plt.title('1948.Month and Money')
  10. plt.show()

对于横坐标的bug调整,日期格式,以及如果要求显示的的长度过长,会出现线性故障

  1. import pandas as pd
  2. import matplotlib.pylab as plt
  3. unrate = pd.read_csv('2.csv',encoding='gbk')
  4. unrate["DATE"] = pd.to_datetime(unrate["DATE"]) # 调整坐标日期格式
  5. first_twelve = unrate[:] # 坐标出现的长度
  6. plt.plot(first_twelve["DATE"],first_twelve["VALUE"])
  7. plt.xticks(rotation=)
  8. plt.xlabel('Month')
  9. plt.ylabel('Money')
  10. plt.title('1948.Month and Money')
  11. plt.show()

二、绘制多图形

1)生成子图形

  1. import matplotlib.pylab as plt
  2. fig = plt.figure()
  3. ax1 = fig.add_subplot(,,)
  4. ax2 = fig.add_subplot(,,)
  5. ax3 = fig.add_subplot(,,)
  6. plt.show()
  1. 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) 绘图的长度,长宽

  1. import numpy as np
  2. import matplotlib.pylab as plt
  3. fig = plt.figure(figsize=(,)) # figsize=(,) 绘图的长度,长宽
  4. ax1 = fig.add_subplot(,,)
  5. ax2 = fig.add_subplot(,,)
  6. ax1.plot(np.random.randint(,,),np.arange())
  7. ax2.plot(np.arange()*,np.arange())
  8. plt.show()

3)在同一个图绘制2条折线图

  1. import pandas as pd
  2. import matplotlib.pylab as plt
  3. unrate = pd.read_csv('2.csv',encoding='gbk')
  4. unrate["DATE"] = pd.to_datetime(unrate["DATE"]) # 调整坐标日期格式
  5. fig = plt.figure(figsize=(,))
  6. plt.plot(unrate[:]['DATE'],unrate[:]['VALUE'],c='red')
  7. plt.plot(unrate[:]['DATE'],unrate[:]['VALUE'],c='blue')
  8. plt.show()

4)循环绘制多条折线图

  1. import pandas as pd
  2. import matplotlib.pylab as plt
  3. unrate = pd.read_csv('2.csv',encoding='gbk')
  4. unrate["DATE"] = pd.to_datetime(unrate["DATE"]) # 调整坐标日期格式
  5. fig = plt.figure(figsize=(,))
  6. colors = ['red','blue','green','orange','black']
  7. for i in range():
  8. start_index = i*
  9. end_index = (i+)*
  10. subset = unrate[start_index:end_index]
  11. plt.plot(subset['DATE'],subset['VALUE'],c = colors[i])
  12. plt.show()

5)定义折现的含义

  1. import pandas as pd
  2. import matplotlib.pylab as plt
  3. unrate = pd.read_csv('2.csv',encoding='gbk')
  4. unrate["DATE"] = pd.to_datetime(unrate["DATE"]) # 调整坐标日期格式
  5. fig = plt.figure(figsize=(,))
  6. colors = ['red','blue','green','orange','black']
  7. for i in range():
  8. start_index = i*
  9. end_index = (i+)*
  10. subset = unrate[start_index:end_index]
  11. label = str( + i)
  12. plt.plot(subset['DATE'],subset['VALUE'],c = colors[i],label=label) # label=label 定义图标的名字
  13. plt.legend(loc='best') # 定义图标放在哪个位置,best 系统感觉放在哪个位置好,就放哪
  14. print(help(plt.legend))
  15. plt.show()

四、绘制柱状图

1)获取csv文件的信息

  1. import pandas as pd
  2.  
  3. reviews = pd.read_csv('3.csv',encoding='gbk')
  4. cols = ['FILM','爱奇艺','哔哔站','优酷','土豆','凤凰卫士']
  5. norm_reviews = reviews[cols]
  6. print(norm_reviews[:])

FILM 爱奇艺 哔哔站 优酷 土豆 凤凰卫士
0 火影      7        6        8    9         8

将这些信息转换成图形

2)绘制成型的柱状图

  1. import matplotlib.pyplot as plt
  2. from numpy import arange
  3. import pandas as pd
  4. reviews = pd.read_csv('3.csv',encoding='gbk')
  5. num_cols = ['爱奇艺','哔哔站','优酷','土豆','凤凰卫士']
  6. norm_reviews = reviews[num_cols]
  7.  
  8. bar_heights = norm_reviews.ix[, num_cols].values
  9. print(bar_heights)
  10. bar_positions = arange() +
  11. print(bar_positions)
  12. fig,ax = plt.subplots()
  13. ax.bar(bar_positions,bar_heights, 0.3)
  14. plt.show()

3)加上标题,坐标名称。注意不识别中文

  1. import matplotlib.pyplot as plt
  2. from numpy import arange
  3. import pandas as pd
  4. reviews = pd.read_csv('3.csv',encoding='gbk')
  5. num_cols = ['aiqiyi','哔哔站','优酷','土豆','凤凰卫士']
  6. norm_reviews = reviews[num_cols]
  7.  
  8. bar_heights = norm_reviews.ix[, num_cols].values
  9. print(bar_heights)
  10. bar_positions = arange() +
  11. print(bar_positions)
  12. tick_positions = range(,)
  13. fig,ax = plt.subplots()
  14.  
  15. ax.bar(bar_positions,bar_heights, 0.3)
  16. ax.set_xticks(tick_positions)
  17. ax.set_xticklabels(num_cols,rotation=)
  18.  
  19. ax.set_xlabel('source')
  20. ax.set_ylabel('TV')
  21. ax.set_title('ping web')
  22. plt.show()
  23. plt.close()

4)横向柱状图。只需要修改这里即可。ax.barh(bar_positions,bar_heights, 0.3)

  1. import matplotlib.pyplot as plt
  2. from numpy import arange
  3. import pandas as pd
  4. reviews = pd.read_csv('3.csv',encoding='gbk')
  5. num_cols = ['aiqiyi','哔哔站','优酷','土豆','凤凰卫士']
  6. norm_reviews = reviews[num_cols]
  7.  
  8. bar_heights = norm_reviews.ix[, num_cols].values
  9. print(bar_heights)
  10. bar_positions = arange() +
  11. print(bar_positions)
  12. tick_positions = range(,)
  13. fig,ax = plt.subplots()
  14.  
  15. ax.barh(bar_positions,bar_heights, 0.3)
  16. ax.set_xticks(tick_positions)
  17. ax.set_xticklabels(num_cols,rotation=)
  18.  
  19. ax.set_xlabel('source')
  20. ax.set_ylabel('TV')
  21. ax.set_title('ping web')
  22. plt.show()
  23. plt.close()

5)绘制散点图,横坐标是一个网站的评分,纵坐标是另一个网站的评分

  1. import matplotlib.pyplot as plt
  2. import pandas as pd
  3. reviews = pd.read_csv('3.csv',encoding='gbk')
  4. num_cols = ['aiqiyi','哔哔站','优酷','土豆','凤凰卫士']
  5. norm_reviews = reviews[num_cols]
  6. fig,ax = plt.subplots()
  7. ax.scatter(norm_reviews['aiqiyi'],norm_reviews['哔哔站'])
  8. ax.set_xlabel('Fandango')
  9. ax.set_ylabel('Rotten Tommtoes')
  10.  
  11. plt.show()
  12. plt.close()

6)绘制多条散点图

  1. import matplotlib.pyplot as plt
  2. import pandas as pd
  3. reviews = pd.read_csv('3.csv',encoding='gbk')
  4. num_cols = ['aiqiyi','哔哔站','优酷','土豆','凤凰卫士']
  5. norm_reviews = reviews[num_cols]
  6. fig = plt.figure(figsize=(,))
  7.  
  8. ax1 = fig.add_subplot(,,)
  9. ax2 = fig.add_subplot(,,)
  10. ax1.scatter(norm_reviews['aiqiyi'],norm_reviews['哔哔站'])
  11. ax1.set_xlabel('Fandango')
  12. ax1.set_ylabel('Rotten Tommtoes')
  13. ax2.scatter(norm_reviews['优酷'],norm_reviews['凤凰卫士'])
  14. ax2.set_xlabel('Fandango')
  15. ax2.set_ylabel('Rotten Tommtoes')
  16.  
  17. plt.show()
  18. plt.close()

数据分析处理库pandas及可视化库Matplotlib的更多相关文章

  1. 动态可视化 数据可视化之魅D3,Processing,pandas数据分析,科学计算包Numpy,可视化包Matplotlib,Matlab语言可视化的工作,Matlab没有指针和引用是个大问题

    动态可视化 数据可视化之魅D3,Processing,pandas数据分析,科学计算包Numpy,可视化包Matplotlib,Matlab语言可视化的工作,Matlab没有指针和引用是个大问题 D3 ...

  2. python 可视化库

    在做titanic分析的过程中,看了一些大神的想法,发现在分析数据的过程中,许多大神会使用到seaborn,plotly这些库,而我等小白仅仅知道matplotlib这个唯一的数据可视化库而已.上网查 ...

  3. Python数据分析库pandas基本操作

    Python数据分析库pandas基本操作2017年02月20日 17:09:06 birdlove1987 阅读数:22631 标签: python 数据分析 pandas 更多 个人分类: Pyt ...

  4. 教程 | 一文入门Python数据分析库Pandas

    首先要给那些不熟悉 Pandas 的人简单介绍一下,Pandas 是 Python 生态系统中最流行的数据分析库.它能够完成许多任务,包括: 读/写不同格式的数据 选择数据的子集 跨行/列计算 寻找并 ...

  5. Python数据可视化库-Matplotlib(一)

    今天我们来学习一下python的数据可视化库,Matplotlib,是一个Python的2D绘图库 通过这个库,开发者可以仅需要几行代码,便可以生成绘图,直方图,功率图,条形图,错误图,散点图等等 废 ...

  6. Python可视化库Matplotlib的使用

    一.导入数据 import pandas as pd unrate = pd.read_csv('unrate.csv') unrate['DATE'] = pd.to_datetime(unrate ...

  7. Python可视化库-Matplotlib使用总结

    在做完数据分析后,有时候需要将分析结果一目了然地展示出来,此时便离不开Python可视化工具,Matplotlib是Python中的一个2D绘图工具,是另外一个绘图工具seaborn的基础包 先总结下 ...

  8. python数据分析库pandas

    在我看来,对于Numpy以及Matplotlib,Pandas可以帮助创建一个非常牢固的用于数据挖掘与分析的基础.而Scipy(会在接下来的帖子中提及)当然是另一个主要的也十分出色的科学计算库,但是我 ...

  9. Matplotlib 库 : 绘图和可视化

    一.Matplotlib基础知识 1.1Matplotlib中的基本图表包括的元素 x轴和y轴 axis水平和垂直的轴线 x轴和y轴刻度 tick刻度标示坐标轴的分隔,包括最小刻度和最大刻度 x轴和y ...

随机推荐

  1. http协议与常见状态码

    什么是http: http是属于应用层(基于tcp的连接方式)的面向对象的协议,是计算机通过网络通信的规则,使得浏览器向web服务器请求信息和服务 http协议特点: http是一种无状态协议(对食物 ...

  2. DC之setup-hold time详解

    转自一下站点: http://www.blogbus.com/bb2hh-logs/20463915.html

  3. Devexpress Gridview 自定义汇总CustomSummaryCalculate(加权平均)

    Devexpress Gridview 提供了简单的求和,平均等方法,复杂的汇总方法则需要自定义,使用gridview 的CustomSummaryCalculate 事件,根据官网的文档及各论坛案例 ...

  4. uniquefu Python+Selenium学习--select

    场景 在处理下拉框(select)的时候selenium给我们提供了一系列的便捷方法,我们只需要使用selenium.webdriver.support.select.Select类来稍微封装一下就好 ...

  5. CyclicBarrier簡介

    package CyclicBarrier; import java.util.concurrent.CyclicBarrier;import java.util.concurrent.atomic. ...

  6. Java-排序算法-冒泡排序

    一.冒泡排序的原理 冒泡排序,就是从第一个元素开始,通过两两交换,使小的先冒出来,然后再走第二轮使次小的冒出来,直到最后一轮最大的冒出来,排序完成 二.冒泡排序的伪代码实现: bubblesort(A ...

  7. swift - scrollview 判断左右移动, 以及上下两个view联动

    核心代码 1. 2. 3. 界面代码VFL /* 浏览作品view*/ import UIKit /** * 图片浏览器(大图和缩略图) */ class JYBrowseWorksView: UIV ...

  8. MyBatis延迟加载和缓存(4)

    一.项目创建 1.项目目录结构 2.数据库配置和上一篇的一样,这里不再描述.下面创建mybatis配置文件SqlMapConfig.xml <?xml version="1.0&quo ...

  9. 当前的开源SLAM方案

    开源方案 传感器形式 地址链接 MonoSLAM 单目 https://github.com/hanmekim/SceneLib2  PTAM 单目  http://www.robots.ox.ac. ...

  10. Charles基本使用

    Charles使用 查找电脑IP,菜单选项helpàLocal IP Addresses 手机连接代理 手机打开WiFi,把代理模式设置为手动,设置主机名为Charles所在机器的ip,端口号为Cha ...