《从零开始学python数据分析》学习笔记
《从零开始学python数据分析》学习笔记前言第一章 python相关环境第二章 Numpy第三章 Pandas前言本人0基础,本科专业能源与动力工程,但不感兴趣,因此自学数据分析相关的内容,这知识其中一本书,后面有其他书,会慢慢把学过的书籍和相关内容分享出来。第一章 python相关环境python环境搭建相关的操作:python环境搭建conda create --name xxx pytho
·
《从零开始学python数据分析》学习笔记
前言
本人0基础,本科专业能源与动力工程,但不感兴趣,因此自学数据分析相关的内容,这知识其中一本书,后面有其他书,会慢慢把学过的书籍和相关内容分享出来。
第一章 python相关环境
python环境搭建相关的操作:
- python环境搭建
conda create --name xxx python=3 anaconda #创建python版本为3的环境,并具备anaconda的所有包
conda info --envs #查看环境
activate xxx #激活环境
deactivate xxx #退出环境
conda remove --name xxx --all #删除一个已有的环境
2.包的安装和卸载
conda install xxx
conda remove xxx
pip install xxx
pip unistall xxx
第二章 Numpy
- 函数
arange 类似内置的range函数
ones 创建全为1的数组
ones_like 以另一个数组为参考,生成形状和dtype相同的全为1的数组
zeros、zeros_like 与上两个相似
empty、empty_like 同上
eye、identity 创建正方的N*N单位矩阵
flatten/ravel 将数组合并转化为一维数组 - 数组对象属性
.ndim 秩,即数据轴的个数
.shape 数组的维度
.size 元素的总个数
.dtype 数据类型
.itemsize 数组中每个元素的字节大小 - 数组类型与变换
dtype
astype astype(‘int’)
数组重塑、合并、拆分 reshape、concatenate/vstack(竖直拼接)/hstack(水平拼接)、split
arr1=np.arange(0,12).reshape(3,4)
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]])
arr2=np.arange(12,24).reshape(3,4)
array([[12, 13, 14, 15],
[16, 17, 18, 19],
[20, 21, 22, 23]])
np.concatenate([arr1,arr2],axis=0)
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11],
[12, 13, 14, 15],
[16, 17, 18, 19],
[20, 21, 22, 23]])
np.split(arr1,[2,4])
[array([[0, 1, 2, 3],
[4, 5, 6, 7]]),
array([[ 8, 9, 10, 11]]),
array([], shape=(0, 4), dtype=int32)]
T/transpose((1,0)) #转置
- 数组运算
sum 求和
mean 算数平均数
std、var 标准差和方差
min、max 最小值最大值
argmin、argmax 最小和最大元素的索引
cumsum 所有元素的累计和
cumprod 所有元素的累计积
第三章 Pandas
- 给series命名以及给索引列命名
obj4.name = 'math'
obj4.index.name = 'students'
students
张三 92
李四 78
王五 68
小明 82
Name: math, dtype: int64
- 给dataframe的行、列索引命名
df.index.name = 'id'
df.columns.name = 'std_info'
- 修改索引
data = {
'name':['张三', '李四', '王五', '小明'],
'grade':[68, 78, 63, 92]
}
df = DataFrame(data)
df
结果:
df2 = df.sort_values(by='grade')
df2
df4 = df2.reset_index(drop=True)
df4
- loc和iloc索引
data = {
'name':['张三', '李四', '王五', '小明'],
'sex':['female', 'female', 'male', 'male'],
'year':[2001, 2001, 2003, 2002],
'city':['北京', '上海', '广州', '北京']
}
df = DataFrame(data)
df=df.set_index('name')
df2.loc['张三'] #loc通过索引查找
city 北京
sex female
year 2001
Name: 张三, dtype: object
df2.iloc[0] #iloc通过数字索引查找
city 北京
sex female
year 2001
Name: 张三, dtype: object
df2[(df2['sex'] == 'female') & (df2['city'] == '北京')]
- 添加行、删除行
df = df.append(new_data,ignore_index=True) #忽略索引值
df
new_df = df.drop(2) #删除行
new_df
new_df = new_df.drop('class',axis=1) #删除列
new_df
- 函数映射和应用
map 将函数套用到series的每个元素上
apply 将函数套用到dataframe的行与列上
applymap 将函数套用到dataframe的每个元素上 - 排序、去重
sort_index(ascending=False) #升序
sort_values(by='')
.unique() #去重
第四章 文本读取与存储
read_csv 从文件中加载带分隔符的数据,默认分隔符为逗号
read_table 从文件中加载带分隔符的数据,默认分隔符为制表符
#默认情况下会将第一行作为索引行,所以应该要取消第一行作为标题行
df = pd.read_csv(open('H:/python数据分析/数据/ch4ex3.csv'),header=None)
- txt文件读取
read_table('file_path',sep='') #先用!type查看分隔的字符是什么,再输入sep=''进行分割
-输出为csv文件
df.to_csv('文件名')
- json、excel文件读取
df.read_json('')
df.read_excel('',sheet_name='')
- 连接数据库
import pandas as pd
import pymysql
conn = pymysql.connect(
host='localhost',
user='root',
passwd='123456', #账户密码
db='py-sql', ) #库的名称
df = pd.read_sql('select * from ch4ex9',conn)
df
第五章 数据清理与整理
- fillna 填充缺失值
df2.fillna({1:6,3:0}) #将第一列和第三列的缺失值填充为6和3
df2.fillna(method='ffill') #往上填充,即(2,0)的NaN会填充为4,(2,2)会填充为6
- 检测重复值
df1.duplicated()
0 False
1 Fals
2 True #True代表出现了重复
3 False
dtype: bool
df1.drop_duplicates()
- 替换值
df.replace('*','#') #将*替换成#
df1.replace({'':'不详',2001:2002}) #多个值替换,跟下面的一样,都是将空格替换成不详,2001替换成2002
df1.replace(['',2001],['不详',2002])
第六章 数据分组聚合
- groupby
聚合函数 mean、sum、agg
数据透视表 .pivot_table(values='**,index='**',columns='**',aggfunc='**',margins=True)
交叉表 cross_table = pd.crosstab(index=tab['***'],columns=tab['**'])
因为第七章到第九章的内容我学过了,所以那时候就没有记笔记了哈哈哈哈,记的笔记也相对精炼,没有全部列出
第十章 时间序列
from datetime import datetime
stamp = datetime(2018, 5, 12)
stamp
datetime.datetime(2018, 5, 12, 0, 0)
str(stamp)
'2018-05-12 00:00:00'
stamp.strftime('%Y/%m/%d')
'2018/05/12'
- 时间序列也可以作为索引index
- pd的时间序列
s
2018-04-01 0
2018-04-02 1
2018-04-03 2
2018-04-04 3
2018-04-05 4
Freq: D, dtype: int32
s.shift(2)
2018-04-01 NaN
2018-04-02 NaN
2018-04-03 0.0
2018-04-04 1.0
2018-04-05 2.0
Freq: D, dtype: float64
s.shift(-2)
2018-04-01 2.0
2018-04-02 3.0
2018-04-03 4.0
2018-04-04 NaN
2018-04-05 NaN
Freq: D, dtype: float64
s.shift(2,freq='D')
2018-04-03 0
2018-04-04 1
2018-04-05 2
2018-04-06 3
2018-04-07 4
Freq: D, dtype: int32
更多推荐
所有评论(0)