pandas常用的方法
程序员文章站
2022-05-18 19:36:46
...
andas学习
1,pandas是什么
是python的一个数据分析包,该工具是为了解决数据分析任务而创建的, 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具,
pandas提供了大量能使我们快速便捷地处理数据的函数和方法
简言之: 这玩意儿就是用来处理数据的
膜拜一下大神,先入一下门:
https://blog.csdn.net/yiyele/article/details/80605909
import numpy as np
import pandas as pd
if __name__ == '__main__':
# 将数据库查询到的数据塞入
execute_result = curs.execute(exe_sql)
title = [t[0] for t in self.curs.description]
df = pd.DataFrame(execute_result, columns=title)
# 创建数据表
df = pd.DataFrame({"id": [1001, 1002, 1003, 1004, 1005, 1006],
"date": pd.date_range('20130102', periods=6),
"city": ['Beijing ', 'Beijing ', ' guangzhou ', 'Shenzhen', 'shanghai', 'BEIJING '],
"age": [23, 44, 54, 32, 34, 32],
"category": ['100-A', '100-B', '110-A', '110-C', '210-A', '130-F'],
"price": [1200, None, 2133, 5433, np.nan, 4432]},
columns=['id', 'date', 'city', 'category', 'age', 'price'])
# 写入到EXCEL engine='xlsxwriter': 防止 IllegalCharacterError 需要导入xlsxwriter包
df1.to_excel('excel_name.xlsx', sheet_name='sheet1', engine='xlsxwriter')
# 写入csv
df.to_csv('csv_name.csv')
# 写入html
df.to_html('csv_name.html')
# 读取数据
df_csv = pd.DataFrame(pd.read_csv('csv_name.csv', header=1))
print('csv_name', df_csv.values)
df_xlsx = pd.DataFrame(pd.read_excel('excel_name.xlsx'))
print('excel_name', df_xlsx.values)
# 数据表信息查看
print(' 查看维度', df.shape)
print('查看基本信息', df.info())
print('每一列数据的格式', df.dtypes)
print('某一列格式', df['id'].dtype)
print('判断空值\n', df.isnull())
print('判断空值某一列', df['id'].isnull())
print('查看数据表的值\n', df.values)
print('查看列名称', df.columns)
# 默认前10行数据
print('查看前十行\n', df.head())
# 默认后10 行数据
print('查看后十行\n', df.tail())
# 数据表清洗
print('空值填充', df.fillna(value=0))
# 对某一列的空值进行均值填充
df['price'] = df['price'].fillna(df['price'].mean())
print('对某一列的空值进行均值填充\n', df.head())
# 清楚city字段的字符空格
df['city'] = df['city'].map(str.strip)
print('清楚city字段的字符空格\n', df.head())
print('转小写\n', df['city'].str.lower())
print('转大写\n', df['city'].str.upper())
print('数据格式更改之前:', df['price'].dtype, '更改数据格式之后', df['price'].astype('int').dtype)
df = df.rename(columns={'category': 'category-size'})
print('修改列名称', df.head())
print('删除重复值,默认保留第一次出现的\n', df['city'].drop_duplicates())
print('删除重复值,保留最后一次出现的\n', df['city'].drop_duplicates(keep='last'))
print('数据替换', df['city'].replace('guangzhou', 'HZ'))
# 数据预处理
df1 = pd.DataFrame({"id": [1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008],
"gender": ['male', 'female', 'male', 'female', 'male', 'female', 'male', 'female'],
"pay": ['Y', 'N', 'Y', 'Y', 'N', 'Y', 'N', 'Y', ],
"m-point": [10, 12, 20, 40, 40, 40, 30, 20]})
df2 = pd.DataFrame({"id": [1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018],
"gender": ['male', 'female', 'male', 'female', 'male', 'female', 'male', 'female'],
"pay": ['Y', 'N', 'Y', 'Y', 'N', 'Y', 'N', 'Y', ],
"m-point": [101, 122, 203, 404, 405, 406, 307, 208]})
# 数据合并 merge
print('交集\n', pd.merge(df, df1, how='inner'))
print('左连接\n', pd.merge(df, df1, how='left'))
print('右连接\n', pd.merge(df, df1, how='right'))
print('并集\n', pd.merge(df, df1, how='outer'))
# append
print(df1.append(df2))
# 数据表清洗
print('空值填充', df.fillna(value=0))
# 对某一列的空值进行均值填充
df['price'] = df['price'].fillna(df['price'].mean())
print('对某一列的空值进行均值填充\n', df.head())
# 清楚city字段的字符空格
df['city'] = df['city'].map(str.strip)
print('清楚city字段的字符空格\n', df.head())
print('转小写\n', df['city'].str.lower())
print('转大写\n', df['city'].str.upper())
print('数据格式更改之前:', df['price'].dtype, '更改数据格式之后', df['price'].astype('int').dtype)
df = df.rename(columns={'category': 'category-size'})
print('修改列名称', df.head())
print('删除重复值,默认保留第一次出现的\n', df['city'].drop_duplicates())
print('删除重复值,保留最后一次出现的\n', df['city'].drop_duplicates(keep='last'))
print('数据替换', df['city'].replace('guangzhou', 'HZ'))
# 数据预处理
df1 = pd.DataFrame({"id": [1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008],
"gender": ['male', 'female', 'male', 'female', 'male', 'female', 'male', 'female'],
"pay": ['Y', 'N', 'Y', 'Y', 'N', 'Y', 'N', 'Y', ],
"m-point": [10, 12, 20, 40, 40, 40, 30, 20]})
df2 = pd.DataFrame({"id": [1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018],
"gender": ['male', 'female', 'male', 'female', 'male', 'female', 'male', 'female'],
"pay": ['Y', 'N', 'Y', 'Y', 'N', 'Y', 'N', 'Y', ],
"m-point": [101, 122, 203, 404, 405, 406, 307, 208]})
# 数据合并 merge
print('交集\n', pd.merge(df, df1, how='inner'))
print('左连接\n', pd.merge(df, df1, how='left'))
print('右连接\n', pd.merge(df, df1, how='right'))
print('并集\n', pd.merge(df, df1, how='outer'))
# append
print(df1.append(df2))
# 参考 https://www.yiibai.com/pandas/python_pandas_dataframe.html
# 创建数据帧
# pandas.DataFrame( data, index, columns, dtype, copy)
# data 数据采取各种形式 列表 字典 系列 Numpy ndarrays(多维数组) 或 一个数据帧(DataFrame)
# index 于行标签,要用于结果帧的索引是可选缺省值np.arrange(n),如果没有传递索引值
# columns 列标签
# dtype 每列的数据类型。
# copy 如果默认值为False,则此命令(或任何它)用于复制数据
data = [[1001, '2013-01-02', 'Beijing', '100-A', 23, 1200.0],
[1002, '2013-01-03', 'Beijing', '200-B', 44, None],
[1003, '2013-01-04', 'guangzhou', '110-A', 54, 2133.0],
[1004, '2013-01-05', 'Shenzhen', '110-C', 32, 5433.0],
[1005, '2013-01-06', 'shanghai', '210-A', 34, None],
[1000, '2013-01-07', 'BEIJING', '130-F', 32, 4432.0]]
columns = ['id', 'date', 'city', 'category', 'age', 'price']
df = pd.DataFrame(data, columns=columns)
print(df)
# 增加一行
add_data = [1011, '2020-01-07', '杭州', 'HZ01', 99, 1000.0]
df1 = pd.DataFrame([add_data], columns=columns)
df = df.append(df1)
print(df)
# 删除指定行(按索引来的) inplace=True: 不生成新的数据区 原数据区也会被删除
data1 = df.drop([0, 1, 3, 4], inplace=True)
print('删除之后\n', data1)
print('原数据行\n', df)
# 删除列 del
del df['id']
print('删除列 del \n', df)
# 删除列 .pop() 返回选中的列 且原数据区不再保留该列
print('删除列 pop \n', df.pop('price'))
# 删除列 drop
# print(df)
print('删除行 drop \n', df.drop(['date'], axis=1))
df = pd.DataFrame(data, columns=columns)
print('原始数据\n', df)
# 删除行city为BEIJING的行
drop1 = df.drop(df[df['city'].isin(['BEIJING'])].index)
print('删除北京所在的行\n', drop1)
print('取反city列中不是Beijing的\n',df[~df['city'].isin(['Beijing'])])
上一篇: 松软科技Web课堂:JavaScript 类型转换
下一篇: 通过JDBC连接数据库(二)