python常用模块-pandas

20200927  python文件处理 numpy pandas

001------ numpy

zip----入参为两个列表,常为数组,返回元组列表,以短为准;

NumPy是Python中科学计算的基础包。它是一个Python库,提供多维数组对象,各种派生对象(如掩码数组和矩阵),以及用于数组快速操作的各种API,有包括数学、逻辑、形状操作、排序、选择、输入输出、离散傅立叶变换、基本线性代数,基本统计运算和随机模拟等等。
Python自带的list在使用中更加耗时。使用numpy将大大提高代码的运行速度。。

numpy 常用:

数组
a = np.array([]) #尽量装相同数据类型,不然输出时部分值可能变化
b = np.array([])
a = np.array([[ 1, 2, 9, 4, 3],
[ 0, 5, 3, 5, 1],
[ 8, 3, 2, 4, 7]])
支持 + 、-、 *(对应元素*)、 / 、 **对应元素;


矩阵:
d = np.eye(5)
矩阵修改:d[2,3]=6

ndim(维度)
shape(各维度长度)返回一个元组,列出每个维度的数组长度。 行长列长

我们可以通过dtype来查看numpy数组元素的数据类型。

fill(填充)以指定的元素填充数组。

reshape(重塑)在不改变原数据的情况下,重新按指定形状生成数组;另外赋值,重塑不改变原序列
a = np.arange(36).reshape(6,6)
b = np.arange(36).reshape(6,1,6)

where(条件,[x,y])
返回根据条件从x或y中选择的元素。
a = np.array([[1, 2], [3, 4]])
b = np.array([[9, 8], [7, 6]])
mask = np.array([[1, 0], [0, 1]], dtype=bool) # 1,0 当前元素排列对应二维数组的顺序
c = np.where(mask, a, b) # 11,10,01,00
print(c)
# [[1 8]
# [7 4]]

numpy数组切片和python基本上是一样的。

多维切片
以二维数组为例,先在行切片,找到指定行后再列切片。你可以简单理解为在不同维度切片后重叠区域
b[1,3:5]
b[0:2,0:2]

 

20200927-02 python文件处理 numpy pandas

002------ pandas
1.
df.to_csv 写入到 csv 文件
pd.read_csv 读取 csv 文件
df.to_json 写入到 json 文件
pd.read_json 读取 json 文件
df.to_html 写入到 html 文件
pd.read_html 读取 html 文件
df.to_excel 写入到 excel 文件
pd.read_excel 读取 excel 文件

2.导入CSV或者xlsx文件
df = pd.DataFrame(pd.read_csv('name.csv',header=1))
df = pd.DataFrame(pd.read_excel('name.xlsx'))

3.查看
df.info()
df.dtypes
df.values 查看数据表的值
df.shape
df.columns 查看列名称
df.head() #默认前10行数据
df.tail() #默认后10 行数据
df['B'].unique() 查看某一列的唯一值
df.isnull()
a.mean() 列表a 的均值

4.数据表清洗
df.fillna(value=0) 用数字0填充空值
df['prince'].fillna(df['prince'].mean()) 使用列prince的均值对NA进行填充:
df['price'].astype('int') 更改数据格式
df['city'].replace('sh', 'shanghai') 数据替换
df.rename(columns={'category': 'category-size'}) 更改列名称

5. 数据预处理
创建表:
df = pd.DataFrame({"id":[1001,1002,1003,1004,1005],
"city":['Beijing ', 'SH', ' guangzhou ', 'Shenzhen', 'shanghai'],
"age":[23,44,54,32],
columns =['id','city','age'])

df = pd.DataFrame(list_l, index=date_range,
columns=['a', 'b', 'c', 'd', 'e'])


df = pd.DataFrame({"column1":[valuelist1],"column2":[valuelist2]},columns=['column1','column2'])

6. 数据处理
写入文件:
df_inner.to_csv('excel_to_python.csv')
df_inner.to_excel('excel_to_python.xlsx', sheet_name='bluewhale_cc')
表合并:
df_inner=pd.merge(df,df1,how='inner') # 匹配合并,交集
df_left=pd.merge(df,df1,how='left') #
df_right=pd.merge(df,df1,how='right')
df_outer=pd.merge(df,df1,how='outer') #并集

df_inner.set_index('id') 设置索引列
df_inner.sort_values(by=['age']) 按照特定列的值排序
df_inner.sort_index() 按照索引列排序

df_inner['group'] = np.where(df_inner['price'] > 3000,'high','low') 如果prince列的值>3000,group列显示high,否则显示low

7. 数据提取

df_inner.loc[3]
df_inner.iloc[0:5]
df_inner.reset_index()
df_inner=df_inner.set_index('date')
df_inner[:'2013-01-04'] 提取4日之前的所有数据
df_inner.iloc[:3,:2] #冒号前后的数字不再是索引的标签名称,而是数据所在的位置,从0开始,前三行,前两列。
df_inner.iloc[[0,2,5],[4,5]] #提取第0、2、5行,4、5列
df_inner.ix[:'2013-01-03',:4] #2013-01-03号之前,前四列数据
df_inner['city'].isin(['beijing'])
df_inner.loc[df_inner['city'].isin(['beijing','shanghai'])]
pd.DataFrame(category.str[:3]) 提取前三个字符,并生成数据表

8. 数据筛选
使用与、或、非三个条件配合大于、小于、等于对数据进行筛选,并进行计数和求和。
df_inner.loc[(df_inner['age'] > 25) & (df_inner['city'] == 'beijing'), ['id','city','age','category','gender']]

df_inner.loc[(df_inner['age'] > 25) | (df_inner['city'] == 'beijing'), ['id','city','age','category','gender']].sort(['age'])

df_inner.loc[(df_inner['city'] != 'beijing'), ['id','city','age','category','gender']].sort(['id'])

df_inner.loc[(df_inner['city'] != 'beijing'), ['id','city','age','category','gender']].sort(['id']).city.count()

df_inner.query('city == ["beijing", "shanghai"]') 使用query函数进行筛选

df_inner.query('city == ["beijing", "shanghai"]').price.sum() 对筛选后的结果按price进行求和

9. 数据汇总
df_inner.groupby('city').count() 对所有的列进行计数汇总
df_inner.groupby('city')['id'].count() 按城市对id字段进行计数
df_inner.groupby(['city','size'])['id'].count() 对两个字段进行汇总计数
df_inner.groupby('city')['price'].agg([len,np.sum, np.mean]) 对city字段进行汇总,并分别计算prince的合计和均值

10. 数据统计
df_inner.sample(n=3) 简单的数据采样
weights = [0, 0, 0, 0, 0.5, 0.5]
df_inner.sample(n=2, weights=weights) 手动设置采样权重
df_inner.sample(n=6, replace=False) 采样后不放回
df_inner.sample(n=6, replace=True) 采样后放回
df_inner['price'].std() 计算列的标准差
df_inner.cov() 数据表中所有字段间的协方差
df_inner.corr() 数据表的相关性分析

11. 数据输出

df_inner.to_excel('excel_to_python.xlsx', sheet_name='bluewhale_cc')

df_inner.to_csv('excel_to_python.csv')


df.to_csv 写入到 csv 文件
pd.read_csv 读取 csv 文件
df.to_json 写入到 json 文件
pd.read_json 读取 json 文件
df.to_html 写入到 html 文件
pd.read_html 读取 html 文件
df.to_excel 写入到 excel 文件
pd.read_excel 读取 excel 文件


DataFrame.to_csv(path_or_buf=None, sep=', ', na_rep='', float_format=None, columns=None, header=True, index=True,
index_label=None, mode='w', encoding=None, compression=None, quoting=None, quotechar='"',
line_terminator='\n', chunksize=None, tupleize_cols=None, date_format=None, doublequote=True,
escapechar=None, decimal='.')

index_label : 索引的列标签名
index : 是否保存索引,默认为 True ,保存
header : 是否保存列名,默认为 True ,保存
path_or_buf : 文件路径,如果没有指定则将会直接返回字符串的 json
sep : 输出文件的字段分隔符,默认为 “,”
na_rep : 用于替换空数据的字符串,默认为''
float_format : 设置浮点数的格式(几位小数点)
columns : 要写的列

插入列;把allow_duplicates设置为True,可实现重复列的插入
df4 = df2.insert(0,'inss',range(71,78))
#df4 none df2 update

df2['插入']=list1 ;也可以直接在最后一列插入数据(dataframe或read_csv,总之表可以直接插入)

df3.loc[3] = '111'; 一行全改;
df3.loc[2,'id'] = '222' ; 改一个值,定位内为某行、某列,即行名,列名;


df.info() #查看数据类型
df.shape #查看数据规模
df.describe() #数据统计信息描述

 

posted @ 2021-03-08 23:45  沈一愣  阅读(145)  评论(0编辑  收藏  举报