本篇记载了如何在 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']})