pandas基本用法(一)

读取csv文件

import pandas
# 默认第一行会作为 header, 第一列会作为 index, 
# header=None, index_col=False 会禁止默认行为
food_info = pandas.read_csv(file_name)# 返回一个DataFrame对象
n_rows = food_info.head(n) #获取前n行数据,返回的依旧是个DataFrame
column_names = food_info.columns   #获取所有的列名
dimensions = food_info.shape #获取数据的shape
  • Index

默认情况下,使用pandas.read_csv()读取csv文件的时候,会默认将数据的第一行当做列标签,还会为每一行添加一个行标签。我们可以使用这些标签来访问DataFrame中的数据。
这里写图片描述

DataFrame

Series对象: Each column in a DataFrame is a Series

  • 从df中获取 series 对象:df[col_name]
  • 创建 series 对象: ages = pd.Series([22, 35, 58], name="Age")
  • 常用方法: Series.max(), Series.describe()

DataFrame的增删改查

选择某行数据

data = food_info.loc[0] #使用loc[n]获取第n行数据,如果只是获取一行数据的话,返回Series
#如何选择多行呢,和numpy的语法是一样的
datas = food_info.loc[1:2] #返回DataFrame,返回行标签为1,2的,这个和numpy不一样,而且loc[]也不支持-n

data = food_info.loc[i][j] # i-th row, j-th column
data = food_info.loc[i, j] # 同样是i-th row, j-th column

使用DataFrame.dtypes获取每列的数据类型

  • 选择某列数据如何选择一列数据
    使用DataFrame[indices]获取列数据。注意,要是获取多个列的话selenium_thiamin = food_info[["Selenium_(mcg)",'Thiamin_(mg)']],不要少了个中括号。
df['col_name'] # get value
df['col_name'] = df['col_name'].apply(lambda x: func(x)) # modify value

给DataFrame添加列

new_data_frame = pd.concat([data_frame, pd.DataFrame(columns=['new_col1', 'new_col2'])])

# 重新排列 data_frame 的列
new_data_frame.reindex()

如何遍历 DataFrame 中的数据

# 使用 for 是不可行的!!!!!!!!!!!!!!!!!!!!!
for data in data_frame:
	pass

# 使用 len 和 loc
for i in range(len(data_frame)):
	# 返回的 cur_data 是 series类型,是data_frame中的数据的一个副本
	# 对cur_data的更新是不会影响到 data_frame的!!!!!!
	cur_data = data_frame.loc[i]
	

# 使用 .iteriterms()
for i, series in df.iterrows():
    print(i, ":", type(series))

注意
关于len()

len(data_frame) # 是data_frame的行数
len(data_frame.loc[0]) #是data_frame的列数

关于set()

set(data_frame) # 返回column name
set(data_frame["column1"]) # 返回第一列中不重复的值
set(data_frame.loc[0]) #返回第一行中不重复的值

如何获取所有列名

DataFrame.columns.values.tolist()

如何重置 dataframe 的索引

https://blog.csdn.net/qq_36523839/article/details/80640139

如何保存成 CSV 文件

使用 data_frame.to_csv() 。为了使用这个方法,首先要创建一个 DataFrame 实例。

import pandas as pd
# from_dict, 使用 dict 把每列的数据准备好
predictions = {}
predictions["id"] = ["001", "002"]
predictions["value"] = ["hello boy", "hello world"]

dataFrame = pd.DataFrame.from_dict(predictions)
print(dataFrame)

# from_record, 准备好每一行的数据
predictions2 = []
predictions2.append(["001", 0, 0])
predictions2.append(["002", 0, 0])
dataFrame2 = pd.DataFrame.from_records(predictions2, columns=["id", "is_man", "is_good"])
print(dataFrame2)
# index_col 是否需要 索引列(就是用来行索引的列), header: 是否需要列名
dataFrame2.to_csv(dumpfilename, index_col=False, header=False)

判断获取的值是否为 nan

res = series['val']
pd.isna(res) # nan 返回 True 否则返回 False

给列重新命名

df.columns=["new_name1", "new_name2"]
df.rename(columns={"old_name": "new_name"})

指定列为 index

df.set_index(["colname1"])

重置index

df.reset_index()
  • drop : 如果为 False 原来的 行 index 会变为 列 index, 如果为 True: 原来的行 index 丢掉

groupby

df.groupby()
  • by : 这些key 会变成 行 index

filter

  • 根据 行 或者 列 的名字 过滤
DataFrame.filter(self: ~FrameOrSeries, items=None, like: Union[str, NoneType] = None, regex: Union[str, NoneType] = None, axis=None)~FrameOrSeries
# items: 负责精确匹配
# like: string 包含 匹配
# regex: 正则表达式匹配
# axis: (用哪个维度的 index 进行匹配)0 为 row, 1 为 column; 默认情况下 series 为 index, dataframe 为 column
  • 根据值进行字段中的值进行过滤
# 根据列的值 挑选想要的行
df.loc[df["col"] == val]
df.loc[df["col"].isin([val1, val2])]
df.loc[True - df["col"].isin([val1, val2])]
# 和上面同一个效果
df.loc[~df["col"].isin([val1, val2])]

映射(map)

  • .apply
# 对行/列执行操作, lambda x: func(x) ; x 是一行, 或者一列的值
df.apply()

# 对单个元素进行 apply 操作, lambda x: func(x) , x 是单个值
series.apply()

multiindex 索引

https://www.codenong.com/17921010/

参考资料

https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值