0
点赞
收藏
分享

微信扫一扫

2.3 利用NumPy进行统计分析

天悦哥 2023-05-14 阅读 102

Python【Pandas核心需掌握总结】

三个类型(series,dataframe,index)

1.数据加载

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:Guest.618@101.42.16.8: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】等

2.数据重塑

```
~拼接:pd.concat((df1,df2,df3),ignore_index=True)
~合并:pd.merge(df1,df2,on="...",how="...")
df1.merge(df2,on="...",how="...")
```

3.数据清洗

~ 【缺失值】
·判断空值: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=...)

4. 数据透视

·[排序和头部值]
根据索引排序: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()
举报

相关推荐

0 条评论