数据分析day7

1、pandas中对齐运算

import numpy as np
import pandas as pd

ser_obj1 = pd.Series(range(10,20),index=(range(10)))
ser_obj2 = pd.Series(range(10,15),index=(range(5)))
print(ser_obj1)
print(ser_obj2)
#直接调用add函数将两个Series对象进行相加,未对齐的数据补充为NAN
print(ser_obj1.add(ser_obj2))
#fill_value 参数将Series对象未对齐数据,统一制定为0
print(ser_obj1.add(ser_obj2,fill_value = 0))

#DataFrame
df_obj1 = pd.DataFrame(np.ones((2,2)),columns=['a','b'])
df_obj2 = pd.DataFrame(np.ones((3,3)),columns=['a','b','c'])
print(df_obj1)
print(df_obj2)

print(df_obj1.add(df_obj2))
print(df_obj1.add(df_obj2,fill_value = 0))
#sub 相减 div 相除 mul 相乘

2、pandas中层级索引以及unstack函数

import numpy as np
import pandas as pd

#给Series创建两层索引,外层索引为字母,内层索引设置为数字
ser_obj = pd.Series(np.random.randn(12),
        index=[list("abcdefghijkf"),list(range(5,17)),list(range(-24,-12))])
print(ser_obj)
#选定外层
print(ser_obj['b'])
#选定内层
print(ser_obj[:,10])
#选定最内层
print(ser_obj[:,:,-22])
print(ser_obj["f",10,-19])#所有行索引

#交换分层 swaplevel() 和最内层数据进行交换
#默认两个内层之间交换
print(ser_obj.swaplevel())
#设置参数为0,最外层和最内层的索引产生交换
print(ser_obj.swaplevel(0))
#设置参数为1,内层索引交换
print(ser_obj.swaplevel(1))

#unstack() 将Series对象重构为DataFrame对象
ser_obj2 = pd.Series(np.random.randn(12),index=[
        ['a']*3+['b']*3+['c']*3+['d']*3,
        [0,1,2,0,1,2,0,1,2,0,1,2]
])
print(ser_obj2)
df_obj = ser_obj2.unstack(0)
print(df_obj)

3、Matplotlib进行数据分析

import matplotlib.pyplot as plt
import numpy as np
#线性函数
plt.plot([1,2,3,4])
plt.show()

#显示单个数据点
plt.plot([1,2,3,4],[1,4,8,16])
plt.show()

#加入标题
plt.axis([0,10,0,30])
plt.title("my first plot")
plt.plot([1,2,3,4],[1,4,8,16],"ro")
plt.show()

#改变线条粗细
plt.plot([1,2,3,4,4,5,6,7,8,12,3,4],linewidth = 3.0)
plt.show()

#设置x轴和y轴的标签
plt.axis([0,5,0,20])
plt.title("my second plot")
plt.xlabel("Counting")
plt.ylabel("Square balues")
plt.plot([1,2,3,4],[1,4,9,16],"ro")
plt.show()

#对字体进行修改
plt.axis([0,5,0,20])
plt.title("my third plot",fontsize = 20,fontname = "Time New Roman")
plt.xlabel("Counting",color = "green",fontsize = 18)
plt,ylabel("Square balues",color = "blue",fontsize = 18)

#给每个数据点加上标签
plt.text(1,1.5,"First")
plt.text(2,4.5,"Second")
plt.text(3,9.5,"Third")
plt.text(4,16.5,"Fourth")
plt.plot([1,2,3,4],[1,4,9,16],"ro")
plt.show()

#在图表中添加表达式,并加入图列
plt.axis([0,5,0,20])
plt.title("my Fourth plot",fontsize = 20)
plt.xlabel("Counting",color = "green",fontsize = 18)
plt,ylabel("Square balues",color = "blue",fontsize = 18)
plt.text(1,1.5,"First")
plt.text(2,4.5,"Second")
plt.text(3,9.5,"Third")
plt.text(4,16.5,"Fourth")
plt.text(1.1,12,r"$y = x^2$,fontsize = 20,
        bbox = {"dacecolor":"yellow","alpha":0.5})

plt.grid(True)
plt.plot([1,2,3,4],[1,4,9,16],"ro",linewidth = 2.0)
plt.plot([1,2,3,4],[0.8,3.5,9.7,15.7],"g^",linewidth = 2.0)
plt.plot([1,2,3,4],[0.5,2.5,5.7,14.9],"b*",linewidth = 2.0)
plt.legend(['First Series','Second Series','Third Series'])
plt.show()

#生成曲线图形
x = np.arange(-2*np.pi,2*np.pi,0.01)
y=np.sin(3*x)/x
plt.plot(x,y)
plt.show()

4、figure对象的使用

import matplotlib.pyplot as plt
import numpy as np

#创建-个figure 对象
fig = plt.figure()

#创建-个figure 对象
fig =plt.figure()
arr =np.random.randn(100)
#add_subplot 对figure 对象进行分割
ax1 = fig.add_subplot(2,2,1)
ax2 = fig.add_subplot(2,2,2)
ax3 = fig.add_subplot(2,2,3)
ax4 = fig.add_subplot(2,2,4)
ax1.plot(arr)
ax2.plot(arr)
ax3.plot(arr)
ax4.plot(arr)
plt.show()

#直方图
arr =np.random.randn(100)
plt.hist (arr, bins=20, color="g",alpha=0.3)
plt. show()
#散点图
x = [1,2,3,4]
у = [2,4,6,8]
#创建散点图
plt.scatter(x,y)
plt.show()

#x表示100个横坐标
x = np.arange(100)
y = 2*np.random.randn(100)+x
plt.scatter(x,y)
plt. show()

#柱状图 bar
x = np.arange(10)
y1,y2 = np.random.randint(10,50,size=(2,10))#size参数表示两组数据,每组十个数
print(y1,y2)
#创建一个8*5大小的幕布,指定每个点的分辨率是100
fig = plt.figure(figsize =(8,5),dpi=100)
ax =plt.subplot(111)
#宽度
width = 0.25

ax.bar(x,y1,width, color ="y", alpha=0.4)
ax.bar(x+width,y2,width, color ="r",alpha=0.4)

#指定x轴标记的位置
ax.set_xticks(x+width/2)
ax.set_xticklabels(list("abcdefghij"))
plt.grid(True)
plt. show()

#混淆矩阵
plt.imshow(np.random. randn(8,6), cmap=plt.cm.ocean)
plt.colorbar()
plt.show()

#subplots() 包含fig对象以及所有的subplot数组
fig, subplot_arr=plt. subplots(2,2) subplot_arr[0,1].hist(np.random.randn(100),bins=20, color = "r", alpha =0.5)
subplot_arr[1,0].imshow(np.random,randn(5.5))
plt.show()

颜色、标记和线型的设置
plt.plot(np.random.randint(10,50,20),color = "r",marker = "v",
        linestyle = "dashdot")
plt.plot(np.random.randint(10,50,20),"rv-")
plt.show()

#刻度、标签以及图例的设置
fig, ax = plt.subplots(1)
#设置y轴的刻度范围
ax.set_ylim([0, 1700])
ax.set_yticks(range(0,2000,400))
ax.set_xticks (range (1, 13))
#设置x轴的刻度为12个月
ax.set_xticklabels(["Jan",'Feb','Mar','Apr','May','Jun','Jul',
                    'Aug','Sep','Oct','Nov','Dec'])
#设置X轴和y轴的标签
ax. set_ylabel("Money")
ax. set_xlabel ("Month")
ax.plot(np.random. randint (300,800, 12) , label=u"huangmengji",color = "r")
ax.plot(np.random.randint (300,800,12) , label=u"kouroubanfan")
ax.plot(np.random.randint(300,800,12) , label=u"guoqiaomixian")
#显示图例
ax.legend()
plt. show()

5、seaborn模块

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
sns.set(style="darkgrid")#
tips = sns.load dataset("tips")
print(tips. head(10))
#绘制箱线图
ax = sns.boxplot(x = "day" ,y = "total_bill" ,data=tips)
plt. show()
ax =sns.boxplot(x ="day",y = "total_bill" ,hue ="time" ,data=tips,              linewidth=0.5, saturation=1,width=1,fliersize=3)
plt.show()

#小提琴图
ax=sns.violinplot(x = "day",y = "total_bill", data=tips)
#设置按性别进行分类
ax1 = sns.violinplot(x = "day",y = "total_bil1",hue="sex",
                    data=tips,palette="Set2",split=True,
                    scale="count",inner=None)
plt.show()

#箱线图和分布散点图
ax = sns.violinplot(x = "tip",y = "day",data=tips,inner=None,whis = np.inf)
ax1 = sns.stripplot(x = "tip",y = "day",data=tips,jitter=True,color="c")
plt.show()

#分类估计图
#条形图
ax = sns.barplot(x = "day",y = "total_bill",hue="sex",data=tips)
ax1 = sns.barplot(x = "day",y = "total_bill",hue="sex",data=tips,
                    estimator=np.median,capsize=0.2,errcolor="c")
plt.show()

#计数图
titanic = sns.load_dataset("titanic")
ax = sns.countplot(x = "class", hue="who", data=titanic)
plt.show()

#直方图
np.random. seed (666)
x =np.random.randn (1000)
ax =sns.distplot(x)
plt.show ()
#密度估计图
iris = sns.load_dataset("iris")
g = sns.jointplot("sepal_width",'petal_length',data=iris,kind="kde",
            space=0,ratio=6,color="r")
plt.show ()

#变量关系组图
iris = sns.load_dataset("iris")
g = sns.pairplot(iris)

g1 = sns.pairplot(iris,hue="species",markers=['o','s','D'])
plt.show()

#回归图
g = sns.lmplot(x="total_bill",y = "tip",hue="smoker", data=tips)
plt. show()

#热力图
x = np.random.rand(5,7)
print (x)
ax =sns.heatmap(x)
plt. show()

#在热力图上显示相关系数
x = np.random.rand(10,10)
ax = sns.heatmap(x,annot=True,annot_kws={"size":9,"weight":'bold','color':"w"},fmt=".2f")
plt.show()

6、movies_EA_analysize.py

import warnings
warnings.filterwarnings("ignore")
#pandas 进行数据处理
import pandas as pd
tm_movies_data = pd.read_csv("data/data32181/tmdb_movies.csv")
print(tm_movies_data.head(10))#默认读取5行数据
print(tm_movies_data.tail(10))#读取后10行数据)
#描述性分析
tm_movies_data.info()
#对电影的时长进行预处理,用平均值进行填充
tm_movies_data[ 'duration'] = tm_movies_data['duration'].fillna(
    tm_movies_data [' duration '].mean()
)
#对电影当中导演的名字进行处理,用“U"表示
tm_movies_data['director_name'] =tm_movies_data['director_name'].fillna ("U")

tm_movies_data.info()
#describe() 查看数据的一般统计信息
print (tm_movies_data.describe())

info()函数用于打印DataFrame的简要摘要,显示有关DataFrame的信息,包括索引的数据类型dtype和列的数据类型dtype,非空值的数量和内存使用情况。
1.1 info()函数参数介绍
DataFrame.info (self, verbose=None, buf=None, max_cols=None, memory_usage=None, null_counts=None)
Parameters Value
self self只有在类的方法中才会有,其他函数或方法是不必带self的。有关self的更多内容,指路→ \to→https://www.cnblogs.com/huangbiquan/p/7741016.html
verbose:bool, optional “verbose”中文译为”冗长的”,该参数决定是否打印完整的摘要。如果为True,显示所有列的信息;如果为False,那么会省略一部分。默认情况下,遵循pandas.options.display.max_info_columns中的设置。
buf:writable buffer, defaults to sys.stdout 该参数决定将输出发送到哪里。默认情况下, 输出打印到sys.stdout。如果需要进一步处理输出,请传递可写缓冲区。可将DataFrame.info()存储为变量,指路→ \to→https://blog.csdn.net/qq_34105362/article/details/90056765。
max_col:sint, optional 该参数使得从”详细输出”转换为”缩减输出”,如果DataFrame的列数超过max_cols,则缩减输出。默认情况下, 使用pandas.options.display.max_info_columns中的设置。
memory_usage:bool, str, optional 该参数决定是否应显示DataFrame元素(包括索引)的总内存使用情况。默认情况下为True。 True始终显示内存使用情况;False永远不会显示内存使用情况。

null_counts:bool, optional 该参数决定是否显示非空计数。值为True始终显示计数,而值为False则不显示计数。默认情况下, 仅当Dataframe小于pandas.options.display.max_info_rows和pandas.options.display.max_info_columns时才显示。

版权声明:本文为CSDN博主「ac同学」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_40305043/article/details/104862499

Original: https://blog.csdn.net/weixin_45404425/article/details/120932801
Author: Juerr
Title: 数据分析day7

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/752218/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • pytest测试框架(七)—pytest与jenkins集成(pytest+jenkins+allure)

    目录 一、pytest注册命令行选项 1、addoption 2、pytestconfig.getoption 3、示例 二、Jenkins上显示allure测试报告 1、安装插件…

    Python 2023年9月10日
    046
  • 一条Sql的执行过程

    🚀 优质资源分享 🚀 学习路线指引(点击解锁)知识定位人群定位 进阶级本课程是python flask+微信小程序的完美结合,从项目搭建到腾讯云部署上线,打造一个全栈订餐系统。 入…

    Python 2023年8月9日
    075
  • 飞桨AI创造营2期-t3-数据处理

    飞桨AI创造营2期-数据处理 (Datawhale34期组队学习) 文章目录 飞桨AI创造营2期-数据处理 * 1知识点 2具体内容 – 2.1AI Studio No…

    Python 2023年8月29日
    052
  • Cartopy绘图入门指南

    前言 嗨,你好,我是来自点点GIS的南南 我与Cartopy的认识起源于”气象水文科研猫”的这个推文,那时候的我觉得,用代码画地图好酷,arcgis就感觉l…

    Python 2023年8月30日
    083
  • SSH框架下单元测试的实现

    实现的功能 实现了部门的增删改查 对Action进行了单元测试 对Service 进行了单元测试,通过mock的方式实现。 实现的步骤 一、对Action层的单元测试实现1、首先在…

    Python 2023年6月3日
    091
  • Frontend and backend are using different domain names, how to connect them?-CORS

    安装CORSpip install django-cors-headers添加应用INSTALLED_APPS = (… ‘corsheaders&#821…

    Python 2023年8月5日
    049
  • Pygame使用测试(一)

    最近因为孩子在学习使用Pygame做游戏编程,遇到问题咨询我,不得不对Pygame 做一个初步的了解使用。 官网有详细的入门介绍:https://www.pygame.org/wi…

    Python 2023年9月24日
    045
  • AI常用框架和工具丨3. 可视化库Matplotlib

    可视化库Matplotlib,AI常用框架和工具之一。理论知识结合代码实例,希望对您有所帮助。 文章目录 * – 环境说明 – 一、Matplotlib简介…

    Python 2023年9月1日
    056
  • Flask(十七)——SQLite

    Python拥有对SQlite的内置支持。 SQlite3模块随附Python发行版。在本节中,我们将看到Flask应用程序如何与SQLite进行交互。 创建一个SQLite数据库…

    Python 2023年8月14日
    067
  • 送出100份红包!我用Pytho做了一个炫酷的元宵灯谜会!

    转眼之间,新的一年迎来了元宵节,元宵佳节在陪伴家人的同时,自然也少不了赏花灯,猜灯谜的项目。当然,受到疫情的影响,许多地方今年无法出门赏花灯,猜灯谜。 但是不要紧,小编昨晚用Pyt…

    Python 2023年9月24日
    051
  • python+selenium+pytesseract识别图片验证码

    Original: https://www.cnblogs.com/sn520/p/15777998.htmlAuthor: Python可乐呀Title: python+sele…

    Python 2023年5月24日
    056
  • nms和P,R,map原理及在Yolov5代码中的解析

    将非极大值抑制(nms)和map放在一块进行讲解分析,因为其都是通过IOU和置信度(score)来计算,但两者方式不一样,容易产生干扰,NMS通过IOU来过滤掉候选框,而map通过…

    Python 2023年9月27日
    036
  • OpenAI ChatGPT注册保姆级攻略,有手就行

    啊哦~你想找的内容离你而去了哦 内容不存在,可能为如下原因导致: ① 内容还在审核中 ② 内容以前存在,但是由于不符合新 的规定而被删除 ③ 内容地址错误 ④ 作者删除了内容。 可…

    Python 2023年11月5日
    034
  • pytest接口自动化框架搭建

    目录: * – 一、设计思路-整体框架: – 二、具体框架搭建 – + 1.公共方法—common + * 1.1.yaml_util.py *…

    Python 2023年9月9日
    068
  • conda配置TensorFlow2.4.0GPU版本

    conda配置TensorFlow2.4.0GPU版本 前几天废了老大的劲儿,终于在conda下安装好了CUDA11.0+cuDNN8.0+PyTorch,(该总结只适合已经安装好…

    Python 2023年9月8日
    074
  • pandas 数据整理(转置)

    学习目标 掌握melt函数整理数据的方法 掌握stack、unstack的用法 掌握wide_to_long函数的用法 1 melt整理数据 加载美国收入与宗教信仰数据 impor…

    Python 2023年8月20日
    045
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球