数据分析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/739405/

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

(0)

大家都在看

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