Python中pandas常用的一些基本命令实现(持续更新中......)

本文详细介绍了使用Pandas进行数据处理的各种技巧,包括读取不同格式的文件、处理缺失值、数据筛选、列操作、时间戳处理、相关性分析等,适合初学者和进阶者学习。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、利用pandas读取中文路径:

import pandas as pd
f = open("./动脉期图像.csv", encoding="utf-8")
data = pd.read_csv(f)

2、利用pandas迭代读取csv文件,缓解内存压力

import pandas as pd
import gc

# python利用pandas迭代读取数据
reader = pd.read_csv('E:/python/game_logs.csv', iterator=True)
loop = True
chunksize = 10000
chunks = []

while loop:
    try:
        chunk = reader.get_chunk(1000)
        chunks.append(chunk)
    except StopIteration:
        loop = False
        print("Iteration is stopped.")
df = pd.concat(chunks, ignore_index=True)

3、pandas读取各种格式的文件:

pd.read_csv(filepath)# :从 CSV 文件导入数据
pd.read_table(filepath)# :从限定分隔符的文本文件导入数据
pd.read_excel(filepath)#:从 Excel 文件导入数据
pd.read_sql(query, connection_object)#:从 SQL 表 / 库导入数据
pd.read_json(json_string)#:从 JSON 格式的字符串导入数据
pd.read_html(url)#:解析 URL、字符串或者 HTML 文件,抽取其中的 tables 表格
pd.read_clipboard()#:从你的粘贴板获取内容,并传给 read_table()
pd.DataFrame(dict)#:从字典对象导入数据,Key 是列名,Value 是数据


## 原文:https://blog.youkuaiyun.com/sinat_41104353/article/details/85052343 

pd.read_table(filepath, header=None'#不要headers#',names=['#自己设置列名#'])

# pandas读取指定列的办法
data1.columns=['a', 'b','c']# 获取a,b,c三列
data1[data1.columns[1:]]
## 注意:data1[5:10]
##                 这里取6到11行的所有数据,而不是列数据

4、将两张表按同一id合并起来:

import pandas as pd
prior = pd.read_csv('./order_products__prior.csv')
products = pd.read_csv('./products.csv')
_mg = pd.merge(prior, products, on=['product_id', 'product_id'])  # 输入要合并的表和表间联系的键

以上为读取数据过程中常用的一些技巧。

5、读取纯数据,并给其添加列名

# 读取数据
import pandas as pd
# 构造列名
column_names = ['Sample code number','Clump Thickness', 'Uniformity of Cell Size','Uniformity of Cell Shape','Marginal Adhesion','Single Epithelial Cell Size','Bare Nuclei','Bland Chromatin','Normal Nucleoli','Mitoses','Class']
data = pd.read_csv('https://archive.ics.uci.edu/ml/machine-learning-databases/breast-cancer-wisconsin/breast-cancer-wisconsin.data', names=column_names)

5_2、读取数据后,删除缺失值(元数据中缺失值用?代替) 

# 缺失值进行处理
import numpy as np
data = data.replace('?', np.nan)
# 删除缺失值
data = data.dropna()

5_3、进行数据的分割,将1---9列赋值给x,第10列赋值给y

x = data.ix[:, 1:10]
y = data.ix[:, [10]]

6、pandas读取csv内容,并想删除某一列

【表名中最好不要有中文字符】

import pandas as pd
data = read_csv('......')
data = data.drop(['列索引'],axis=1)    # 1按列删除,0是按行删除

7、查看各列数据的缺失值情况:

df = pd.read_csv()
print('查看缺失值情况:', df.isnull().sum())

 8、pandas显示所有的列和行(去掉引号显示)

#显示所有列
pd.set_option('display.max_columns', None)
#显示所有行
pd.set_option('display.max_rows', None)
#设置value的显示长度为100,默认为50
pd.set_option('max_colwidth',100)
#设置pandas数据输出宽度,避免数据进行换行显示
pd.set_option('display.width',450)    #设置宽度为450

9、pandas的ix/iloc/loc(获取某一行或多行数据)的区别:

.loc[i, '列名']:loc专注于取行数,'列名'可加可不加,加上就是取i行该列,不加就是取整个i行

import pandas as pd
data=[[1,2,3],[4,5,6]]
index=['a','b']#行号
columns=['c','d','e']#列号
df=pd.DataFrame(data,index=index,columns=columns)#生成一个数据框

# 【注意】:取第一行的三种方式(以下三种方式结果相同)
#1、iloc
df.iloc[0]
##【注意】也可以用df.iloc获取指定的行列数据
df.iloc[1,1:3]#获取第2行,第2、3列的数据

# 2、loc
df.loc['a']

# 3、ix
df.ix[0]
df.ix['a']

# c    1
# d    2
# e    3
# Name: a, dtype: int64

# 【注意】:获取某一列或多列数据的方法
#1、获取某一列
df['c']#获取‘c’列

#2、获取多列
df[df.columns[0:2]]#获取第一列和第二列

-10-、筛选出类别型(object)列的列名:

import pandas as pd

df = pd.read_csv()
object_lst = df.dtypes
object_lst = list(object_lst[object_lst=='object'].index)

10、对一列数据(最好是分类数据)进行类数统计:

from collections import Counter
Counter(data['labels'])     # 对labels列进行每类个数的统计

# 上面是之前的笨办法,其实pd中有自己的函数去统计每类值的出现个数
import pandas as pd
data = pd.read_csv('')
data['a'].value_counts()

11、分别提取时间戳的年 月 日 时 分 秒:

import pandas as pd
data = read_csv('......')
# 1、先将时间戳转换为标准时间格式
time_value = pd.to_datetime(data['time'], unit='s')    # 时间戳    ------>   1970-01-01 18:09:48
# 2、把日期格式1970-01-01 18:09:48转换成字典格式
time_value = pd.DatetimeIndex(time_value)
# 3、提取相应的值即可
data['day'] = time_value.day
data['hour'] = time_value.hour
data['weekday'] = time_value.weekday

11、根据一些值的范围缩减数据 ,进行数据筛选:

import pandas as pd
data = read_csv('......')
data = data.query('x>1.0 & x<1.25 & y>2.5 & y<2.75')    # 类似于sql语句

12、dataframe数据给索引加上一个列名,方便调用“索引”值(reset_index后,原来的索引已经不是索引了) ;

13、作出各变量间的相关系数阵

import pandas as pd
import numpy as np

data = pd.read_csv(inputfile)
# 输出皮尔逊相关系数
np.round(data.corr(method='pearson'), 2) 

# 再根据系数矩阵,画出热力图
import seaborn as sns
import matplotlib.pylab as plt

plt.figure(figsize=(62,54))
corr = data.corr()
sns.heatmap(corr, fmt='.lg', annot=True, cbar=False)

# 根据特征值与目标值的相关性,剔除相关性低的特征值变量
corr_labels = np.abs(corr['目标值变量']).sort_values(ascending=False)
## 选择相关程度在0.04以上的特征作为新的特征
index = list(corr_labels[corr_labels>0.4].index)
del index[0]
new_feature = data[index]

14、pandas快速往DataFrame中插入一行数据:

# 【注意】新插入的数据必须带有索引index
data = pd.read_csv(...)
data.loc['index'] = [...]

15、pandas的unique:

data = pd.read_csv(...)
data['a'].unique()    # 查看‘a’列中的唯一值,但是不会返回个数

 

pandas的read_csv()参数总结(仍在补充中)[经常遇到的]:

# 1、打开带有中文路径的csv文件:
## 第一步:
fr = open('中文路径', encoding='utf-8')
## 第二步:
pd.read_csv(f)

# 2、遇到数据表中没有列名需要自己添加:
## 方法一
pd.read_csv('文件路径', header=None)
a.columns = ['a', 'b', ...]
## 方法二
pd.read_csv('文件路径', names = ['a', 'b', ...])

# 3、默认分隔符
pd.read_csv('文件路径', sep=',')

# 4、分批读取数据
## 详见第8条内容
pd.read_csv('文件路径', iterator=True)

# 5、在读取文件时,pd会自动将默认会将'-1.#IND', '1.#QNAN', '1.#IND', '-1.#QNAN', 
## '#N/A N/A','#N/A', 'N/A', 'NA', '#NA', 'NULL', 'NaN', '-NaN', 'nan', '-nan', ''转换为
##  NaN,关闭默认:
pd.read_csv('文件路径', keep_default_na=False)

# 6、在读取数据时指定索引列
pd.read_csv('文件路径',set_index='将作为索引的列名')

# 7、在指定列名后,会出现一种怪象,如下所示,此时要索引某一列,要加两个中括号“[]”
    name sex age ...  
id
1    s    0   5
2    d    1   6

此时,用data[['name']]才能索引到name这一列

------------------------------------------------------------------------------------------------------------------------------------------------------------------------

二、markdown编辑技巧

1、插入图片,并调整图片大小 

第一种办法:
<p align='center>
    <img src='./images/1.jpg' alt='sample' width='400' heigth='300'>
    <p align='center'>
        <em>Figure 1 : Minimizing the cost is like finding the lowest point in a hilly landscape</em>
	</p>
</p>

第二种方法:
<img src="./images/1.jpg" style="width:650px;height:300px;">
<caption><center> <u> **Figure 1** </u>: **Minimizing the cost is like finding the lowest point in a hilly landscape**</center></caption>

2、用一个网址查看github上的ipynb文件:

https://nbviewer.jupyter.org/github/ + ‘github上ipynb的路径’

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值