Pixiv - KiraraShss
Pandas 学习笔记
756 字
4 分钟
Pandas 学习笔记
1 Series
1.1 Series 创建
- 根据列表创建:
s1 = pd.Series([4,7,-5,3]) # 默认 index: 0, 1, 2, ...0 41 72 -53 3dtype: int64- 根据列表创建并制定索引
s2 = pd.Series([4,7,-5,3],index=['d','b','a','c']) # 指定 indexd 4b 7a -5c 3dtype: int64- 根据字典创建:
sdata = {'Ohio':35000,'Texas':71000,'Oregon':16000,'Utah':5000} # 指定了index 名称和其对应的值s3 = pd.Series(sdata)Ohio 35000Oregon 16000Texas 71000Utah 5000dtype: int64- 根据字典创建,并指定索引:
sdata = {'Ohio':35000,'Texas':71000,'Oregon':16000,'Utah':5000}states = ['California','Ohio','Texas','Oregon'] # 跟上面差不多,只不过再根据该列表指定的 index 重新排序s4 = pd.Series(sdata,index = states)California NaNOhio 35000.0Texas 71000.0Oregon 16000.0dtype: float641.2 访问 Series
- 索引值访问;
- 下标数字访问;
- 传入含有多个索引值的列表,返回一个
Series。
# s2:'''d 4b 7a -5c 3dtype: int64'''
s2[2] # -5
s2['a'] # -5
s2[['a','b','d']]# 输出'''a -5b 7d 4dtype: int64'''1.3 切片
与利用下标进行切片不同,使用标签进行切片时,末端是包含的:
obj['b':'c']# 输出b 1.0c 2.0dtype: float642 DataFrame
2.1 创建
- 创建空
DataFrame
df = pd.DataFrame()- 从文件读取
df1 = pd.read_excel("filename.xlsx")df2 = pd.read_csv("filename.csv")- 直接创建,无数据
pd.DataFrame(columns=['A', 'B', 'C'], index=[0,1,2])- 从二维数组创建
pd.DataFrame(data=[['Apple',5], ['Banana',10], ['Cherry',8], ['Dates',3], ['Eggfruit',7]], columns = ['Fruits','Quantity'], index=[1,2,3,4,5])- 从字典创建
注意,这里的键值是作为 Column 值。
fruits_dict = { 'Fruits':['Apple','Banana','Cherry','Dates','Eggfruit'], 'Quantity': [5, 10, 8, 3, 7], 'Color': ['Red', 'Yellow', 'Red', 'Brown', 'Yellow']}pd.DataFrame(fruits_dict)- 从 Series 创建
df2 = pd.DataFrame(pd.Series(np.random.randint(1, 10, 100)), columns = ['xxx'])2.2 增加、修改
dataFrame["新增列"] = 6# 新增行dataFrame.loc["c"] = [55,88,99,66]dataFrame
第一列 第二列 第三列 新增列a 1 2 3 6b 4 5 6 6c 55 88 99 66
# 另外,append也可以增加,但是它增加的索引是默认值,而且之前的index会变列dataFrame.append([55])
0 新增列 第一列 第三列 第二列a NaN 6.0 1.0 3.0 2.0b NaN 6.0 4.0 6.0 5.0c NaN 66.0 55.0 99.0 88.00 55.0 NaN NaN NaN NaNdf.append(Series, ignore_index=True)# 增加一行,记得 ignore_index2.3 删除
# 删除行df.drop('Charlie', axis=0)# 默认值为axis = 0,因此可以省略axis。print(df.drop('Charlie'))
# 删除列,注意这里的0是列名哦dataFrame.drop('age', axis=1)2.4 查看
# 前N行,不写参数N,则是前五行dataFrame.head(N)
# 后N行,不写参数N,则是后五行dataFrame.tail(N)2.5 保存至文件
dataFrame.to_excel("输出.xlsx",index=False,sheet_name="1")2.6 操作
- 排序
df.sort_values(by=0,ascending=False,axis=1)# by: 根据该列/行名排序# ascending: 升序,默认为 True# axis: 给列排序,默认为0- 重命名
主要用到的参数有:
- columns:列名
- index:行名
- axis:指定坐标轴
- inplace:是否替换,默认为False。inplace为False时返回修改后结果,变量自身不修改。inplace为True时返回None,变量自身被修改。
df.rename(columns={"A": "a", "B": "c"}) # 修改columns。inplace未设置,返回修改后的结果
df_re = df.rename(index={0:"0a",1:"1a"}) # 同样的方式修改行名- 筛选
- 如果想要筛选出 B列大于零 的行:
df1 = df[df['B']>0]- 如果想要筛选出 B列中大于零 的行,同时只显示B列的数据:
df2 = df['B'][df['B'] >0]- 如果想要筛选出 B列大于零,同时C列小于零的行:
df3 = df[(df['B']>0)&(df['C']<0)] # 这里&符号可以实现多条件的筛选支持与分享
如果这篇文章对你有帮助,欢迎分享给更多人或赞助支持!
相关文章 智能推荐
1
技术学习笔记之 PIL 模块
笔记本 2024-01-24
2
技术学习笔记之 Python 语言基础
笔记本 2023-12-07
3
Python学习笔记之类
笔记本 2024-08-28
4
高中信息技术之递归题解(一)
笔记本 2024-10-06
5
OpenCV 车道线识别
笔记本 2024-07-09
随机文章 随机推荐
无穷大?