本篇记载了如何在 python 中使用数据挖掘的相关的模块。
都是基础级的东西了。
参考:
《python数据科学入门》
在学习时零散地从网站、博客上获得的相关的知识
numpy
arg 的用法
fancy indexing
pandas
Dataframe
创建
方法一:
df=pd.read_clipboard(engine='python')
与之对应的是 read_clipboard
方法二:
通过 Series 列表创建
df=pd.DataFrame([Series])
填充
np
df_new['May 2020']=np.arange(1,8)
注意行数,超过会报错
series
1.由于 dataframe 本质上是由一列一列的 series 组成的,所以可以有以下做法
df_new['May 2020']=Series(np.arange(1,8))
这样做还有一种好处,就是可以修改指定的行
df_new['May 2020']=Series([4,5],index=[1,2])
查看
.head()
.tail()
.iloc[行切片,列切片]
.loc[行切片,列切片]
reindex
Series.reindex(index=[],fill_value=)
fill_value 填充溢出项
method:ffill follow fill
溢出默认为 NaN
NaN
.isnull()
.notnull()
dataframe
.dropnan() 数据清洗?
axis 0:行 1:列
how any:任意 all:全部
.fillna()
多级 index
.unstack() 转化为 dataframe
mapping
DataFrame.map(dict)
注意 index 的一致性
replace
DataFrame.replace(dict)
or
DataFrame.replace(a,b)
a,b 可以为 list
简单操作
DataFrame.describe()
Series.sort_values()
Series.sort_index()
DataFrame[].sort_values() 输出 Series
DataFrame.sort_values()
DataFrame.sort_index()
merge
相同的 columns
key
how
concatenate
apply
del dataframe[‘column’]
删除指定列
数据清洗(略)
dataframe[‘column’].unique() 去除一列中的重复数据(返回 series)
dataframe.drop_duplicates([‘column’]) 按照指定的列进行去重(直接对本体进行操作)
args:keep(选择行基准)
df_clean[~df_clean[‘Type’].isin([‘Free’])]
去除 type 列中值为 Free 的行
时间序列操作
方便生成长的 series
series[xxxx-xx-xx] 返回时间为 xxxx-xx 的数据
series[xxxxxxxx] 同上
pd.date_range(‘xxxx-xx-xx’,periods=num,freq=’W’)
返回 datetimeindex 数组,长度为 num,间隔为周
freq:5H 以每5小时为间隔
series[xxxx-xx]
返回时间为 xxxx-xx 的数据集合
series.resample() 填充、采样
填充
series.resample(‘H’).ffill() .bfill()
更多操作参照参数表
采样
范式
weekly_df['Ali']=stock_df['ali'].resample('W').mean()
数据分箱
bins=[0,59,70,80,100]
df['categ']=pd.cut(df['score'],bins,labels=['bad','good','great','perfect'])
数据分组
g=df.groupby(df[‘col’)]
g.groups 显示分组结果
df_col=g.get_group(‘col’) 生成新的基于 col 的 df
这里的 col 指的是列中的某一个值
接下来就可以进行 df 的常规操作,如:
df_col.mean() 求均值
for name,group in g: #对 group 进行访问
print(name)
print(group)
对某两个 col 作 groupby
g=df.groupby(df[‘col1’,’col2’])
for (name1,name2),group in g:
数据聚合
g.agg(‘argname’)
同时,也可以自定义聚合方式
透视表
pd.pivot_table(df,index=[‘col’……],values=[‘col’……],aggfunc=’funcname
‘)
other args:
columns:要分析的列
fill_value:填充Nan
技巧
df[‘col’].value_counts()
统计该列数值次数
series.unstack()
将多级的 series 转换为 df
df.sort_values(‘col’,……)
matplotlib
subplot() 子图
subplots()
plot()
args:
stacked : 堆叠形式
df.iloc[rowindex].plot()
按行画图
hist
plt.hist()
直方图
Seaborn
hist 直方图
kde 密度图
rug 轴须图
heatmap 热力图
sns.load_dataset(args) 获取库数据
sns.axes_style() 列出参数列表然后可以进行 sns.set_style({a:b},[……)修改
plotting_context()
set_context()
.set() 恢复为默认参数
sns.color_palette() # RGB
sns.palplot() # 查看当前的色板
可以增加色板的容色数
sns.color_palette(‘hls’,num)
生成 num 数目的颜色
seaborn.pythondata.org
杂项
每一行的是由[0]和[1]组成
[0]是 index 的类型,[1]是一个 Series
shift+tab
magic function
%timeit +函数
e.g. %timeit np.arange(10)
数据获取
public dataset
seaborn 字体
myfont=FontProperties(fname=r'/Users/zxjsama/Library/Fonts/SimHei.ttf')
sns.set(font=myfont.get_family())
sns.set_style("whitegrid",{"font.sans-serif":['SimHei']})