诸神缄默不语-个人CSDN博文目录

pandas数据科学中常用的Python包。

pandas官网pandas – Python Data Analysis Library
pandas文档官网pandas documentation — pandas 1.4.2 documentation

1. 安装

如果使用anaconda作为Python虚拟环境管理工具,则其base环境中会直接默认安装pandas包,这也是pandas官网getting started页面介绍方法pandas – Python Data Analysis Library
anaconda的安装和使用此处不再赘述。

如果不是anacondabase环境,则可以参考pandas文档中安装部分的介绍来进行安装:Installation — pandas 1.4.2 documentation
pandas官方支持Python3.8, 3.9和3.10版本
直接在虚拟环境中用conda安装即可conda install pandas

2. 导入导出

2.1 xlsx后缀的Excel文件

导入data=pd.read_excel('file.xlsx')
https://pandas.pydata.org/docs/reference/api/pandas.read_excel.html

入参:

2.2 SQL

导出
DataFrame.to_sql(name, con, schema=None, if_exists='fail', index=True, index_label=None, chunksize=None, dtype=None, method=None)

入参:

2.3 CSV文件

导入
train = pd.read_csv(文件路径)

3. 处理pd.DataFrame格式对象

3.0 属性

  1. colomns列名

3.1 新建表格

3.2 合并表格

  1. 两个表格列相同,直接把一个表格元素完全添加到另一个后面,并直接重置索引table3=pd.concat([table1,table2],ignore_index=True)

3.3 取出数据

3.3.1 按列取

  1. 按照列名组成的列表取出对应列:table2=table1[['col1','col2','col3']]

3.3.2 按行取

df.loc[1]
df.iloc[1]

3.3.3 按行列坐标

dataframe.loc[1, 'c']
dataframe.iloc[1, 3]

3.3.4 按条件

  1. 删除DataFrame中col1一列中元素满足条件的行
    1. 直接用匿名函数实现,如条件是含有英文字母(实现效果是保留没有英文字母的行):table2=table1[table1['col1'].apply(lambda x:not bool(re.search('[a-zA-Z]',x)))]

3.4 查看分析数据

  1. 查看描述信息table1.info()
    输出示例
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 9959 entries, 0 to 9958
Data columns (total 25 columns):
 #   Column         Non-Null Count  Dtype         
---  ------         --------------  -----         
 0   days_act       9959 non-null   int64         
 1   days_plan      9959 non-null   int64         
 2   profit_pero    9959 non-null   int64         
 3   sales_pred     9959 non-null   int64         
 4   sales_perc     9959 non-null   int64         
 5   shipment       9959 non-null   object        
 6   records        9959 non-null   int64         
 7   profit_rate    9959 non-null   float64       
 8   product_name   9959 non-null   object        
 9   profit         9959 non-null   int64         
 10  shipment_date  9959 non-null   datetime64[ns]
 11  country        9959 non-null   object        
 12  region         9959 non-null   object        
 13  city           9959 non-null   object        
 14  sub_category   9959 non-null   object        
 15  customer_name  9959 non-null   object        
 16  discount       9959 non-null   float64       
 17  num            9959 non-null   int64         
 18  province       9959 non-null   object        
 19  category       9959 non-null   object        
...
 23  post_method    9959 non-null   object        
 24  sales_act      9959 non-null   int64         
dtypes: datetime64[ns](2), float64(2), int64(9), object(12)
memory usage: 1.9+ MB
  1. 查看前面几行:table1.head()(默认打印5行)
  2. 查看最后几行:table1.tail()(默认打印5行)
  3. 查看某一列有多少种取值table1['col1'].nunique()
  4. 查看某一列的所有取值table1['col1'].unique()
  5. 查看某一列所有取值对应数目table1['col1'].value_counts()(默认降序排列
  6. 查看某一列的缺失值总数:table1['col1'].isna().sum()

3.5 缺失值填充

  1. 直接将title列的缺失值(None)置为空字符串train['title'] = train['title'].fillna('')

3.6 其他

  1. 重置索引,且不保留原始索引:table2=table1.reset_index(drop=True)
  2. 检测一个应该str格式的元素是否是空值isinstance(factor,str) or not np.isnan(factor)
  3. 转换数据格式
    1. DataFrame.astype(dtype, copy=None, errors='raise')
    2. pandas.to_datetime(arg, errors='raise', dayfirst=False, yearfirst=False, utc=False, format=None, exact=_NoDefault.no_default, unit=None, infer_datetime_format=_NoDefault.no_default, origin='unix', cache=True)

4. 处理pd.Series格式的对象

类似dict的键值对格式

索引:index
值:value

1. 创建

  1. DataFrame列实际上就是Series,所以经常对DataFrame列进行操作之后,返回值就是Series
    比如data['shipment_date']-data['order_date']

2. 修改

  1. map(arg, na_action=None):对元素值进行批量处理

3. 查看与分析数据

  1. 求和:sum()
  2. 最大值max()
  3. 最小值min()
  4. 重复值(返回np.array):unique()
  5. 重复值和对应出现次数:value_counts()

5. pandas类函数

  1. to_numeric(arg, errors='raise', downcast=None, dtype_backend=_NoDefault.no_default)
    将arg转换数值类型
    1. arg:可以pd.Series对象

6. 常见bug和警告

  1. 没有安装openpyxl需要自己安。安完之后再重新运行代码,还是会报这个警告(在运行read_excel()报警告):在这里插入图片描述
    但是据我观察不影响后续程序运行,所以我也不管了。

7. 本文撰写过程中参考的网络资料

  1. pandas中DataFrame 数据合并,连接(merge,join,concat)_dataframe merge on index_Paulzhao6518的博客-CSDN博客
  2. Python中布尔值Bool的取反问题 – 知乎
  3. 详解 Pandas 与 Lambda 结合进行高效数据分析_AI科技大本营的博客-CSDN博客
  4. python3 判断字符串是否包含中英文和数字_Saggitarxm的博客-CSDN博客
  5. pandas重置DataFrame或Series的索引index_series 去除index_不论如何未来很美好的博客-CSDN博客
  6. pandas中对nan空值的判断和陷阱_pandas nan判断_S_o_l_o_n的博客-CSDN博客

原文地址:https://blog.csdn.net/PolarisRisingWar/article/details/125031226

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。

如若转载,请注明出处:http://www.7code.cn/show_11811.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注