1. 前言
创作开始时间:2021年9月22日11:26:49
在写python的时候经常需要用到pandas dataframe来处理、存储数据。但是一直都是一知半解,所以在此详细研究,以期“一劳久逸”。
2. dataframe的起源
dataframe是pandas库里面的一个数据结构。
Pandas DataFrame is two-dimensional size-mutable, potentially heterogeneous tabular data structure with labeled axes (rows and columns). A Data frame is a two-dimensional data structure, i.e., data is aligned in a tabular fashion in rows and columns. Pandas DataFrame consists of three principal components, the data, rows, and columns.
pandas的介绍如下:(来源:官网 https://pandas.pydata.org/pandas-docs/stable/index.html )
pandas is an open source, BSD-licensed library providing high-performance, easy-to-use data structures and data analysis tools for the Python programming language.
这里: https://www.runoob.com/pandas/pandas-tutorial.html 讲的非常好。
Pandas 可以从各种文件格式比如 CSV、JSON、SQL、Microsoft Excel 导入数据。 Pandas 可以对各种数据进行运算操作,比如归并、再成形、选择,还有数据清洗和数据加工特征。 Pandas 广泛应用在学术、金融、统计学等各个数据分析领域。
关于dataframe的解释,菜鸟教程(https://www.runoob.com/pandas/pandas-dataframe.html )解释的更好理解一些:
DataFrame 是一个表格型的数据结构,它含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔型值)。DataFrame 既有行索引也有列索引,它可以被看做由 Series 组成的字典(共同用一个索引)。
3. dataframe基础操作
3.1. 创建dataframe
import pandas as pd
data = {'Site':['Google', 'Runoob', 'Wiki'], 'Age':[10, 12, 13]}
df = pd.DataFrame(data)
print (df)
df = pd.DataFrame(np.nan, index=[0,1,2,3], columns=['A'])
print(df)
3.2. dataframe的基本信息
df.info()
df.shape
len(df)
print(list(df.columns.values))
3.3. 读取和存储dataframe
df = pd.read_csv('nba.csv')
print(df.to_string())
df.to_csv('site.csv')
3.4. 以下主要参考:
3.5. 按行、按列索引
df.loc[[0, 1]]
df.loc["day2"]
print(df.iloc[0][0])
print(df.loc[0]['Site'])
print(df.at[0,'Site'])
print(df.iat[0,0])
3.6. 添加一行
df.loc[2] = ['new', 1]
3.7. 添加一列
df['index'] = df.index
df.loc[:, 'new_col'] = pd.Series(['5', '6', '7'], index=df.index)
df.loc[:, 'new_col'] = pd.Series(['5', '6', '7'])
3.8. 删除一行或者一列
df.drop(1, axis=0, inplace=True)
df.drop('site', axis=1, inplace=True)
df.drop(df.columns[[1]], axis=1, inplace=True)
df.drop(df.columns[1], axis=1, inplace=True)
3.9. 按列值筛选
df = df[df['col_name'] == "value"]
3.10. 遍历dataframe
import pandas as pd
df = pd.DataFrame({'c1': [10, 11, 12], 'c2': [100, 110, 120]})
for index, row in df.iterrows():
print(row['c1'], row['c2'])
参考: https://stackoverflow.com/questions/16476924/how-to-iterate-over-rows-in-a-dataframe-in-pandas 但是其中有一个答案说强烈不推荐用iter*方法。
3.11. 保留特定的column(或者删除)
df.drop(df.columns[[1, 2]], axis=1, inplace=True)
df1 = df1.drop(['B', 'C'], axis=1)
df1 = df[['a','d']]
参考: https://stackoverflow.com/questions/14940743/selecting-excluding-sets-of-columns-in-pandas
3.12. print指定列
print(df[['col_1', 'col_2']].to_string(index=False))
3.13. 替换列中的值
df["col"].replace({"ori_val": "new_val", "ori_val2": "new_val2"}, inplace=True)
参考:https://www.kite.com/python/answers/how-to-replace-column-values-in-a-pandas-dataframe-in-python
3.14. 去除重复值
df = df.drop_duplicates()
df = df.drop_duplicates(subset=['col_1', 'col_2'], keep='last')
参考:https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.drop_duplicates.html
4. 扩展
4.1. 根据A列的值,输出B列的值
for value in set(df.apr.values):
print(f"\n\n============== {value}:\n\n")
print(df[df.apr == value]['bug'].to_string(index=False))
5. 小结
以上,后续再见机补充。
创作结束时间:2021年9月22日20:22:58
6. 参考文献
|