pandas 数据处理

pandas常用数据结构

pd.Series(data=None, index=None, dtype=None, name=None, copy=False, fastpath=False)
pd.DataFrame(data=None, index=None, columns=None, dtype=None, copy=False)

pandas读写excel文件

import pandas as pd
​
#以第四行为头标题,以名字为"序号"的这一列为索引
data = pd.read_excel("xxx1.xlsx", header=3, index_col='序号')
​
data.to_excel("xxx2.xlsx")

pandas 审阅数据

print(data.columns)
#查看数据的前5行
print(data.head())
#查看数据的后5行
print(data.tail())
#查看维度信息
print(data.shape)
#查看每一列的数据格式
print(data.dtypes)
# 查看数据表基本信息(维度、列名称、数据格式、所占空间等)[挺有用的]
print(data.info())
​
#查看某一列的数据,两种方式,但是中文可能有危险
print(data['综合评价'])
print(data.综合评价)
​
# 按索引提取单行或者多行的数据,注意,从0开始
# 提取第4行
print(data.iloc[4])
# 提取到第4行
print(data.iloc[0:4])
# 提取所有行,0到4列
print(data.iloc[:, 0:4])
# 提取第1,2,5行的0到4列
print(data.iloc[[0,1,4],0:1])
# 提取第1,2,5行的第3,4列
print(data.iloc[[0,1,4],[2,3]])
#dataFrame中at使用,先行后列
print(data.at[i, "综合评价"])
​
# 按发明人数量进行排序,取前10行
inventor_count = data.sort_values(by=['发明人数量'], ascending=False).loc[:10,["专利名称", "发明人数量"]]
print(inventor_count)
https://blog.csdn.net/qq_18351157/article/details/105362159列的索引排序(原始排序)
count_class = pd.value_counts(data['存活期'], sort=True)
print(count_class)

pandas非法值处理

# 删除某列中为空的数据
mydf.dropna(subset=['列名'],inplace=True)

pandas 数据类型

pandas类型python类型
objectstr
int64int
float64float
boolbool
#pandas数据类型转化 astype()函数
data['首次公开日'] = data['首次公开日'].astype(str)

pandas Dataframe的复制

#很多的时候,对数据的处理会影响到本身,如果不想改变原始数据的话可以复制一个副本
#[]可以选取dataframe中的多列,然后调用copy函数(似乎不用copy也行)
data1 = data[['col1','col2']].copy()

pandas时间处理

#时间转化
pd.to_datetime(data['首次公开日'],format="%Y%m%d", errors='coerce')
#这里errors参数 这个参数有三个属性
#   raise 属性  如果遇到错误会显示错误信息。【默认】
#   coerce 属性  如果遇到错误会设置为nat , 然后删除为空的可以实现信息过滤。
#   ignore 属性  如果遇到转换失败,会把不能转换的属性保留,只转换能转换的值。

条件判断

#返回一个布尔值列表
print(data['发明人数量']==6)
#返回发明人数量等于6的数据的专利名称和发明人数量
print(data.loc[data['发明人数量']==6, ["专利名称", "发明人数量"]])
​
#字符串匹配 https://blog.csdn.net/qq_18351157/article/details/105362159
完全匹配    
    ==
部分匹配
    str.contains()      包含一个特定的字符串
        参数:
        na:缺失值NAN处理
        case:是否对大小写敏感
        regex:使用正则表达式模式
    str.endswith()      以特定的字符串结尾
    str.startswith()    以特定字符串开头
    str.match()         匹配正则表达式模式
    
​
#例子 选择包含'SIEMENS'的数据,na=False可以消除NAN影响
data[data['专利权人'].str.contains('SIEMENS',na=False)]
​
#pandas中的bool运算
df[条件1 & 条件2]  #逻辑并
df[条件1 | 条件2]  #逻辑或
data[data['专利权人'].str.contains('西门子',na=False)|data['专利权人'].str.contains('SIEMENS',na=False)]


pandas骚操作

#将一行的数据拆分为多行
rule.explode('condition')

pandas分组和排序

#按首次公开日排序
data['首次公开日'].groupby(data['首次公开日']).count()
#numpy对值进行排序
np.sort(values)
#unique()返回列中所有不重复的值
values = data['首次公开日'].unique()
#pandas中sort_values函数
data.sort_values(by, axis, ascending, inplace)
#   by:可以是字符串也可以是列表如 "a" 或者 ["a", "b"]指定行列排序
#   axis=0【默认】 按列排序     axis=1 按行排序
#   ascending=True【默认】从小到大  ascending=False 从大到小

pandas调整列之间的顺序

#可以直接指定列的顺序
order = ['country','count']
df = df[order]
#或者
df = df[['country','count']]

loc和iloc的区别

loc函数 使用行列索引来指定数据 iloc函数使用行列号来指定数据

print(data.loc[['a', 'b'], ['A', 'B']])
print(data.iloc[[0, 1], [0, 1]])

pandas导出数据

#pandas修改索引名字
data.set_index("xxx")
df.to_excel("excel_name.xlsx")
#不带索引
df.to_excel("excel_name.xlsx",index=None)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值