1. 手工创建DataFrame

 a = [[1, 2, 2],[3,None,6],[3, 7, None],[5,None,7]]
data = DataFrame(a)

2. Excel数据数据没有顶头的处理

 import os
import pandas as pd
base_path = "D:\\practicespace\\Python\\datasets"
file_name = "data.xlsx"
path = os.path.join(base_path, file_name)
print(path)
if(os.path.exists(path)):
print("file exists") data = pd.read_excel(path, sheet_name="Sheet4", header=2, usecols="C:J")
data.head()

3. 字段值统计

data.Region.value_counts()

output:

EOC    36675

SOC    28468

WOC    20460

NOC    16017

Name: Region, dtype: int64

4.字段包含特殊符号(比如空格)的索引方式

不能再采用".字段名“的方式,而是要采用字符索引方式:

 print("region count: ", len(data.Region.value_counts()))
print("Sub Region count: ", len(data["Sub Region"].value_counts()))

或者去掉特殊,然后再进行字段直接索引

df = df.rename(columns=lambda x: x.replace("'","").replace('"','')).replace(" ","")

5. 缺失值处理

1)统计缺失值

 total = data.isnull().sum().sort_values(ascending=True)
percent = (data.isnull().sum()/data.isnull().count()).sort_values(ascending=True)
table = pd.concat([total, percent], axis=1, keys=["total", "percent"])

2)删除缺失值的行列

 # 使用dropna方法删除含有缺失值的行,默认是行
print(data.dropna())
# 删除含有缺失值的列
print(data.dropna(axis=1))

3)填充缺失值

 from pandas import DataFrame
a = [[1, 2, 2],[3,None,6],[3, 7, None],[5,None,7]]
data = DataFrame(a)
print(data)
# 统一填充缺失值为指定值
print(data.fillna(0))
# index=1(从0开始)列缺失值填充为1,index=2的列的缺失值填充为2
print(data.fillna({1:1,2:2}))
# 使用平均值进行填充
print(data.fillna(data.mean()))
# 前向填充,使用默认是上一行的值,设置axis=1可以使用列进行填充,不存在或者上一行也是None的时候就不填充
print(data.fillna(method="ffill"))
print()
# 后向填充,使用下一行的值,不存在或者下一行也是None的时候就不填充
print(data.fillna(method="bfill"))

6.遍历数据运算

 # 最原始,效率最低的迭代方案
def myfunction(df):
res_list = []
for i in range(0,len(df)):
res_list.append(df.iloc[i]['first']/df.iloc[i][‘second'])
return disftance_list
# 通过iterrows做遍历
def haversine_looping(df):
disftance_list = []
for index,row in df.iterrows():
disftance_list.append(row[‘high']/row[‘open'])
return disftance_list
# Cython做了全局优化,效率比iterrow有所提高,这里注意axis必须要设置
df.apply(lambda row: row[‘high']/row[‘open'], axis =1)
# pandas的矢量化处理,比较快,做了底层实现优化
dftest4['rate'] = dftest4['high']/dftest4['open']
# 通过values将pandas的serias数据转化为numpy arrays,效率最高,因为numpy在底层做了C的预编译
dftest5['rate'] = dftest5['high'].values/dftest5['open'].values

7. 列内容重置

 df1['total'] = df1.Jan + df1.Feb + df1.Mar
df1['category'] = np.where(df1['total'] > 200000, 'A', 'B')

这里注意,如果是total已经存在,可以通过df1.total的索引方式,但是如果是新创建的列,只能通过["columnName"]的方式进行索引。

8. 删除列

 del DF['column-name']
DF= DF.drop('column_name', 1);
DF.drop('column_name',axis=1, inplace=True)
DF.drop([DF.columns[[0,1, 3]]], axis=1,inplace=True) # Note: zero indexed

9. group

在pandas里面的group,分组和运算是分开的,对于聚合则是在group之后通过调用sum,mean之类的函数基于分组做运算;

 # 单分组
groupall = data.groupby("Region")
groupall = groupall.sum()
groupall
# 多分组
groupall = data.groupby(["Region", "Sub Region"])
groupall = groupall.sum()
groupall

10. reindex vs. reset_index

reindex是进行列重排,需要指定要保留那些列(也可以指定新列),

 df = pd.DataFrame(np.arange(9).reshape(3,3), index=[2,3,1], columns=['a','b','c'])
df
df1=df.reindex(columns=['a','b'])
df1
  df2=df.reindex(columns=['a','b','e'])
  df2

df返回为:

a b c
2 0 1 2
3 3 4 5
1 6 7 8

df1返回为(看到c列已经消失了):

 a b
2 0 1
3 3 4
1 6 7

df2返回为:

 a b e
2 0 1 NaN
3 3 4 NaN
1 6 7 NaN

reset_index则是重新创建一个索引列,一般group之后索引列就消失了,所以需要通过reset_index重新插入一列索引,默认不改变数据,只是插入一列索引列,可以通过指定drop参数来对原索引列进行删除(group之类的聚合操作已经没有原索引列信息了)。

>>> df = pd.DataFrame(np.arange(9).reshape(3,3), index=[2,3,1], columns=['a','b','c'])
>>> df

>>> df2 =df.reset_index()
>>> df2

>>> df3 = df.reset_index(drop=True) #删除原索引列
>>> df3

>> 输出的df为:

a b c
2 0 1 2
3 3 4 5
1 6 7 8

>> 输出的df2为:

index  a b c
0 2    0 1 2
1 3    3 4 5
2 1    6 7 8

>> 输出的df3为:

 a b c
0 0 1 2
1 3 4 5
2 6 7 8

参考:

https://www.jianshu.com/p/e664b9a3bf70

https://blog.csdn.net/katyusha1/article/details/81501893

缺失值处理

https://blog.csdn.net/sinat_29957455/article/details/79017363

迭代处理

https://blog.csdn.net/m0_37382341/article/details/83716988

Pandas的DataFrame的更多相关文章

  1. python 数据处理学习pandas之DataFrame

    请原谅没有一次写完,本文是自己学习过程中的记录,完善pandas的学习知识,对于现有网上资料的缺少和利用python进行数据分析这本书部分知识的过时,只好以记录的形势来写这篇文章.最如果后续工作定下来 ...

  2. Pandas之Dataframe叠加,排序,统计,重新设置索引

    Pandas之Dataframe索引,排序,统计,重新设置索引 一:叠加 import pandas as pd a_list = [df1,df2,df3] add_data = pd.concat ...

  3. pandas中DataFrame对象to_csv()方法中的encoding参数

    当使用pd.read_csv()方法读取csv格式文件的时候,常常会因为csv文件中带有中文字符而产生字符编码错误,造成读取文件错误,在这个时候,我们可以尝试将pd.read_csv()函数的enco ...

  4. pandas(DataFrame)

    DataFrame是二维数据结构,即数据以行和列的表格方式排列!特点:潜在的列是不同的类型,大小可变,标记行和列,可以对列和行执行算数运算. 其中Name,Age即为对应的Columns,序号0,1, ...

  5. Python3 Pandas的DataFrame数据的增、删、改、查

    Python3 Pandas的DataFrame数据的增.删.改.查 一.DataFrame数据准备 增.删.改.查的方法有很多很多种,这里只展示出常用的几种. 参数inplace默认为False,只 ...

  6. Python3 Pandas的DataFrame格式数据写入excle文件、json、html、剪贴板、数据库

    Python3 Pandas的DataFrame格式数据写入excle文件.json.html.剪贴板.数据库 一.DataFrame格式数据 Pandas是Python下一个开源数据分析的库,它提供 ...

  7. python. pandas(series,dataframe,index) method test

    python. pandas(series,dataframe,index,reindex,csv file read and write) method test import pandas as ...

  8. pandas取dataframe特定行/列

    1. 按列取.按索引/行取.按特定行列取 import numpy as np from pandas import DataFrame import pandas as pd df=DataFram ...

  9. Pandas中DataFrame修改列名

    Pandas中DataFrame修改列名:使用 rename df = pd.read_csv('I:/Papers/consumer/codeandpaper/TmallData/result01- ...

  10. Spark与Pandas中DataFrame对比

      Pandas Spark 工作方式 单机single machine tool,没有并行机制parallelism不支持Hadoop,处理大量数据有瓶颈 分布式并行计算框架,内建并行机制paral ...

随机推荐

  1. Zabbix4.0如何添加监控信息

    二.添加监控信息 监控Windows主机: 首先需要在Windows主机上安装好Zabbix agent,安装方法,见另一篇博客,https://www.cnblogs.com/opsprobe/p/ ...

  2. Spring Cloud 之 Feign 知识点:封装了 REST 调用

    Feign Client 会在底层根据你的注解,跟你指定的服务建立连接.构造请求.发起请求.获取响应.解析响应,等等. Feign 的一个关键机制就是使用了动态代理. 首先,如果你对某个接口定义了 @ ...

  3. AHOI2014 奇怪的计算器 和 HDU5306 Gorgeous Sequence

    线段树秀操作题. 奇怪的计算器 有 N 个数,一共会对这 N 个数执行 M 个指令(对没个数执行的指令都一样),每一条指令可以是以下四种指令之一:(这里 a 表示一个正整数) 加上 a 减去 a 乘以 ...

  4. Easy-Mock模拟get接口和post接口实例

    1.先创建项目,再新建接口 创建项目入口:首页右下角 + 按钮 创建接口入口如下图: 关于mock的语法这里不做说明,可查看mock.js官方查看更详情的资料. 小tip:在Easy-Mock里面支持 ...

  5. SQL Server Spool 假脱机

    SQL Server的Spool(假脱机)操作符,用于把前一个操作符处理的数据(又称作中间结果集)存储到一个隐藏的临时结构中,以便在执行过程中重用这些数据.这个临时结构都创建在tempdb中,通常的结 ...

  6. pg_flame postgresql EXPLAIN ANALYZE 火焰图工具

    pg_flame 是golang 编写的一个将pg的EXPLAIN ANALYZE 转换为火焰图,使用简单 以下是一个简单的demo 环境准备 docker-compose 文件   version: ...

  7. webpack打包vue单文件组件

    一.vue单文件组件 ①文件扩展名为 .vue 的 就是single-file components(单文件组件) ②参考文档:单文件组件 二.webpack加载第三方包 ①项目中,如果需要用到一些第 ...

  8. Apache ServiceComb Pack 微服务分布式数据最终一致性解决方案

    https://github.com/OpenSagas-csharp/servicecomb-pack-csharp Saga基本使用指南 使用前置条件说明 如果还有同学对Saga还不甚了解的同学, ...

  9. 计蒜客 41387.XKC's basketball team-线段树(区间查找大于等于x的最靠右的位置) (The Preliminary Contest for ICPC Asia Xuzhou 2019 E.) 2019年徐州网络赛

    XKC's basketball team XKC , the captain of the basketball team , is directing a train of nn team mem ...

  10. GoCN每日新闻(2019-10-28)

    GoCN每日新闻(2019-10-28) 1. 理解和攻击Go DSA验证漏洞 https://paul.querna.org/articles/2019/10/24/dsa-verify-poc/2 ...