Matpoltlib && Pandas 学习笔记

目录

Matplotlib

matplotlib常用方法

散点图

饼图

直方图

Pandas

pandas.Series(*args)参数说明

DataFrame 数据结构

CSV file

数据清洗


Matplotlib

定义: Matplotlib 是python的绘图库

Pyplot 是其子库,通用绘制2D图表,

matplotlib常用方法
import matplotlib.pyplot as plt

# 常用方法
plot()       # 绘制线图和散点图
scatter()    # 散点图
bar()        # 水平/垂直条形图
hist()       # 直方图
pie()        # 饼图
imshow()     # 绘制图像
subplots()   # 绘制子图

# plot([x],y,[fmt],*,data=None,**kwargs)
x,y        # x,y轴的数据,可以为列表或数组
fmt        # 可选,定义样式[如颜色、标记和样式]
**kwargs   # 二维平面上,设置指定属性,如标签或线的宽度

eg:

plt.plot(np.array([1,3]),np.array([2,4]))
plt.show()

plt.plot(ypoints,marker='o',linestyle='dotted',color='r')  
# marker  o - 点,* - ⭐,

# linestyle(同ls)  param  
solid   # '-'   实线
dotted  # ':'   点虚线
dashed  # '--'  破折线
dashdot # '-.'  点划线

plt.xlable('x-label')  # x轴的标签
plt.ylable('y-label')  # y轴的标签

plt.grid(b=None,which='major',axis='both')   
b        # 默认None,显示网格
which    # 可选 'minor'、'both',默认'major'
axis     # 默认'both',可选'x'或'y'
**kwargs # 可选,如:color='r',linestryle='-',linewidth=2
散点图
scatter()   #  散点图

bar()       # 柱形图
plt.bar(x,height,width=0.8,bottom=None,*,align='centor',data=None,**kwargs)

x           # x轴数据
height      # 柱形图的高度
width       # 柱形图的宽度
bottom      # y左边,默认0
align       # 柱形图与x坐标的对齐方式,centor中心位置,edge对齐左边
饼图
plt.pie(x,explode=None,labels=None,colors=None,autopct=None)

param:
explode   # 各扇形的间隔,默认为0
labels    # 各扇形的标签
autopct   # 设置扇形内各个扇形的百分比,%d%%百分比整数,%0.1f一位小数

eg:
import matplotlib.pyplotas plt
# 数据
sizes =[15,30,45,10]
# 饼图的标签
labels =['A','B','C','D']
# 饼图的颜色
colors =['yellowgreen','gold','lightskyblue','lightcoral']
# 突出显示第二个扇形
explode =(0,0.1,0,0)
# 绘制饼图
plt.pie(sizes, explode=explode, labels=labels, colors=colors,
        autopct='%1.1f%%', shadow=True, startangle=90)
# 标题
plt.title("RUNOOB Pie Test")
# 显示图形
plt.show()
直方图
plt.hist(x,bins=None,range=None,)

param:
x     # 绘制数据,可以是一维数组或列表
bins  # 可选参数,直方图的箱数,默认10
range # 直方图的值范围

eg:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
 
# 使用 NumPy 生成随机数
random_data = np.random.normal(170, 10, 250)
 
# 将数据转换为 Pandas DataFrame
dataframe = pd.DataFrame(random_data)
 
# 使用 Pandas hist() 方法绘制直方图
dataframe.hist()

# 设置图表属性
plt.title('RUNOOB hist() Test')
plt.xlabel('X-Value')
plt.ylabel('Y-Value')

# 显示图表
plt.show()

Pandas

全称: 'panel data' and 'python data analysis'

Analy: Series(一维数据)、DataFrame(二维数据)

主要应用:

  • 数据清洗:处理缺失数据、重复数据等
  • 数据转换:改变数据的形状、结构或格式
  • 数据分析: 进行统计、聚合、分组
  • 数据可视化:整合Matplotlib 进行数据可视化
pandas.Series(*args)参数说明
Pandas 数据结构 - Series
特点:
索引:可以是int、str、date等,若无自动创建int 索引
数据类型:通常int、float、str 等

pandas.Series(data, index, dtype, name, copy)

param:
data   #  一组数据(ndarray类型)
index  # 索引标签,若无默认从0开始
dtype  # 数据类型
name   # 名称
copy   # 拷贝数据,默认False

eg1: # 无索引值,从0开始
import pandas as pd
a=[1,2,3]
mystr=pd.Series(a)
print(mystr)  # mystr[2]  输出  2

eg2:  # 设置索引值,列表形式
import pandas as pd
a=['a','b','c']
mystr=pd.Series(a,index=['x','y','z'])
print(mystr)

eg3:  # 索引值,字典形式
import pandas as pd
str_dict={'1':'a','2':'b'}
mystr=pd.Series(str_dict)
DataFrame 数据结构
DataFrame-表格型数据结构
特点:
    行/列:多列中每一列可看作Series,行索引可用标识每一行
    二维结构:视为多个Series对象组成的字典
    列类型结构:可包含不同类型结构:eg:int、float、string
    
pandas.DataFrame(data,index,columns,dtype,copy)

param:
    data      # 一组数据
    index     # 索引
    columns   # 列标签
    dtype     # 数据类型
    copy      # 拷贝数据,默认False      

eg1: # 列表类型
import pandas as pd
data = [['a','1'],['b',2],['c',3]]
df=pd.DataFrame(data,columns=['x','y'],dtype=float)
print(df)

eg2: # ndarrays类型
import pandas as pd
s_dict={'x':['1','2','3'],'y':['a','b','c']}
df=pd.DataFrame(s_dict)
print(df)
# 返回第一行
print(df.loc[0])   # 使用loc属性返回指定行的数据,
# 返回第二行
print(df.loc[1])    # df.loc[0,2] 返回1和3行的数据

eg3: # dict类型
import pandas as pd
data=[{'a':1,'b':2},{'a':'x','b':'y'}]
df=pd.DataFrame(data)
print(df)

# 输出
   a  b
0  1  2
1  x  y
CSV file
CSV  [Comma-Separated Values,逗号分隔值] # 以纯文本形式存储表格数据

pd.read_csv('file')  # 获取文件数据

eg:
import pandas as pd
df = pd.read_csv('test.csv')
print(df.to_string())   # to_string 可显示全部数据,避免用 ... 代替

df.to_csv('test.csv')  # 将读取的文件保存到csv文件
df.head(n)             # 获取前n行数据   同  tail(n)  用法
注:当无参数是默认前5行或后5行
df.info                # 返回表格的基本信息

pd.json_normalize(data,record_path=['students'])  # 完整解析数据
数据清洗
# 数据清洗:如数据缺失、数据格式错误、错误数据或重复数据
dropna()          # 方法
DataFrame.dropna(axis=0,how='any',thresh=None,subset=None,inplace=False)
param:
    axis      # 默认为0,表示遇到空值删除整行,若设置为1,删除整列
    how       # 默认为any,遇到NA删除整行,若设置为all删除整列
    thresh    # 设置需要多少非空值的数据才可以保留
    subset    # 设置想要检查的列,若多列使用列名的list做参数
    inplace   # 如果设置True,将计算的值覆盖源数据并返回None
    
eg1:  # 将指定类型数据指定为空数据类型
import pandas as pd
missing_values=['n/a','na','--']
df=pd.read_csv('test.csv',na_values=missing_values)
print(df['key1'])
print(df['key1'].isnull())   # 返回每行数据的bool值

eg2:  # 删除包含空数据的行
import pandas as pd
df= pd.read_csv('test.csv')
new_df=df.propna()          #  若设置 inplace=True 会修改源数据,若设置 subset=['key1']  会移除该列为空的行
print(new_df.to_string())  

df=fillna(123,inplace=True) # 用123替换空字段
df['pid']=fillna(123,inplace=True) # 用123替换pid为空的数据

mean()      # 平均值
median()    # 中位数值
mena()      # 众数

# 清洗格式错误数据,如时间

data = {
    'date':['2023/12/01','2023/12/02','20231203']
    'duration':[50,40,3000]
}
df= pd.DataFrame(data,index=['1','2','3'])

df['date']=pd.to_datetime(df['date'])   # 清洗格式问题

# df.loc[2,'duration']=30     # 修改数据
# 将duration大于40的值设置为40
for x in df.index:
    if df.loc[x,'duration']>40:
        df.loc[x,'duration']=40   # 修改值,若删除需执行  df.drop(x,inplace=True)


print(df.to_string())

df.duplicated()  # 清洗重复数据,打印其每行的bool值
df.drop_duplicates()  # 删除重复数据

你可能感兴趣的:(data_alaysis,pandas,笔记,matplotlib)