1)【pd.read_csv】
~sep/delimiter 指定分隔符
~encoding=''指定编码
~index_col 列索引
~usercols 使用哪一列
~skiprows跳过哪一行查看数据
~true_values、false_values 将数据变为布尔值进行处理
~iterator、chunksize 迭代器对象
~quotechar 包裹字符串的符号
2)【pd.read_excel】
~openpyxl库或者xlrd xlwt库
~sheet_name 指定工作表
~header 指定表头
3)【pd.read_sql】
~pysql或者sqlalchemy库
~%pip install pymysql sqlalchemy
# 使用sql引擎对象先导入
from sqlalchemy import create_engine
engine = create_engine('mysql+pymysql://guest:[email protected]:3306/hrs')
# pd.read_sql_query
# pd.read_sql
# pd.read_sql_table
4)【重要属性:】如何操作单元格
·操作行、操作列:loc、iloc(是数据系列对象,series对象)
·操作单元格:at、iat
·添加列:df['...'] = ... / df.insert(index, '...', ...)
·添加行:df.loc[...] = [...] / df.loc[...] = {...}
5)【基础方法】
设置索引:df.set_index()
重置索引:df.reset_index()
索引重命名:df.rename(index={…},colums={…})
删指定行删列:df.drop(index=[…],rows=[…])
df.drop(index=[…],colums=[…])
# 一般不在原表上进行操作,有返回值,尽量创建接收对象,或者对数据源进行备份
获取相关信息:df1.info()
查看前多少行数据:df1.head()
查看后多少行数据:df1.tail()
补充:【pd.read_pickle、pd.read_hdf5】等
```
~拼接:pd.concat((df1,df2,df3),ignore_index=True)
~合并:pd.merge(df1,df2,on="...",how="...")
df1.merge(df2,on="...",how="...")
```
~ 【缺失值】
·判断空值:df.isna()/df.isnull(),df.notna()/df.notnull()
·删除空值:df.dropna(axis=..)/df.drop(index=..)
·填充空值:df.replace(np.nan...)/df.fillna(..,method='')
~【重复值】
·判断重复:df.duplicated(...)
·删除重复:df.drop_duplicated(..,keep=..)
·统计重复:ser.nunique() / ser.value_counts()
~【异常值】
·判断异常:箱线图判定法、zscore判定法
·删除异常:df.drop(index=[...])
·替换异常:df.replace(old_value,new_value)/ser.repalce(old_value,new_value)
~【预处理】
·[字符串:]
``ser.str
lower()/upper()/title()
isdigit()...endswith()
split()/strip()/replace()
extract()
·[日期和时间:]
``pd.to_datetime()
year/quarter/month/day/weekday/hour/minute
strfitime()
ceil()/floor()
·[分箱(离散化)]
`` pd.cut()
``pd.qcut()
·[映射变换:]
ser.map(func)/ser.apply(func)
元素级:df.applymap(func)
行级或列级不能归约:df.transform(func,axis=...)
行级或列级可以归约:df.apply(func,axis=...)
·[排序和头部值]
根据索引排序:df.sort_index()
根据值排序:df.sort_values(by=...,ascending=...)/ser.sort_vlues()
前N大/小:df.nlargest(n,...)/df.nsmallest(n,...)
--->agg({})针对不同列用字典区别对待
[分组聚合]
·df.groupby(by=...)
·df.pivot(index,columns,values) -->df.melt(...)
·ser.rolling(window_size)
[透视表]根据A统计B
·df.pivot_table(index,colums,values,aggfunc,fill_values,margins) #df的方法
·pd.pivot_table(df,colums,values,aggfunc) #pd的函数
交叉表: pd.crosstab()
6.数据洞察
—分析方法:
~对比法
~拆解法(要素拆解,维度拆解,流程拆解)
~漏斗法 —— 向前找流量、向后看转化、自身看画像
~相关分析法——找业务抓手
~象限法
~逻辑树分析法
— 分析模型
~SWOT
~PEST模型
~RFM、RFA
~AIPL模型
~LIFT模型