目录
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(二维数据)文章来源:https://www.toymoban.com/news/detail-820947.html
主要应用:文章来源地址https://www.toymoban.com/news/detail-820947.html
- 数据清洗:处理缺失数据、重复数据等
- 数据转换:改变数据的形状、结构或格式
- 数据分析: 进行统计、聚合、分组
- 数据可视化:整合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() # 删除重复数据
到了这里,关于Matpoltlib && Pandas 学习笔记的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!